{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Click-Through Rate Prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import random\n",
    "n = 40428967  #total number of records in the clickstream data \n",
    "sample_size = 1000000\n",
    "skip_values = sorted(random.sample(range(1,n), n-sample_size)) \n",
    "\n",
    "types_train = {\n",
    "    'id': np.dtype(int),\n",
    "    'click': np.dtype(int),\n",
    "    'hour': np.dtype(int),\n",
    "    'C1': np.dtype(int),\n",
    "    'banner_pos': np.dtype(int),\n",
    "    'site_id': np.dtype(str),\n",
    "    'site_domain': np.dtype(str), \n",
    "    'site_category': np.dtype(str),\n",
    "    'app_id': np.dtype(str),\n",
    "    'app_domain': np.dtype(str),\n",
    "    'app_category': np.dtype(str),\n",
    "    'device_id': np.dtype(str),\n",
    "    'device_ip': np.dtype(str),\n",
    "    'device_model': np.dtype(str),\n",
    "    'device_type': np.dtype(int),\n",
    "    'device_conn_type': np.dtype(int),\n",
    "    'C14': np.dtype(int),\n",
    "    'C15': np.dtype(int),\n",
    "    'C16': np.dtype(int),\n",
    "    'C17': np.dtype(int),\n",
    "    'C18': np.dtype(int),\n",
    "    'C19': np.dtype(int),\n",
    "    'C20': np.dtype(int),\n",
    "    'C21':np.dtype(int)\n",
    "}\n",
    "\n",
    "types_test = {\n",
    "    'id': np.dtype(int),\n",
    "    'hour': np.dtype(int),\n",
    "    'C1': np.dtype(int),\n",
    "    'banner_pos': np.dtype(int),\n",
    "    'site_id': np.dtype(str),\n",
    "    'site_domain': np.dtype(str), \n",
    "    'site_category': np.dtype(str),\n",
    "    'app_id': np.dtype(str),\n",
    "    'app_domain': np.dtype(str),\n",
    "    'app_category': np.dtype(str),\n",
    "    'device_id': np.dtype(str),\n",
    "    'device_ip': np.dtype(str),\n",
    "    'device_model': np.dtype(str),\n",
    "    'device_type': np.dtype(int),\n",
    "    'device_conn_type': np.dtype(int),\n",
    "    'C14': np.dtype(int),\n",
    "    'C15': np.dtype(int),\n",
    "    'C16': np.dtype(int),\n",
    "    'C17': np.dtype(int),\n",
    "    'C18': np.dtype(int),\n",
    "    'C19': np.dtype(int),\n",
    "    'C20': np.dtype(int),\n",
    "    'C21':np.dtype(int)\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>497487217</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>85f751fd</td>\n",
       "      <td>c4e18dd6</td>\n",
       "      <td>50e219e0</td>\n",
       "      <td>febd1138</td>\n",
       "      <td>82e27996</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>21611</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2480</td>\n",
       "      <td>3</td>\n",
       "      <td>297</td>\n",
       "      <td>100111</td>\n",
       "      <td>61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1852466777</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "3   497487217      0 2014-10-21  1005           0  85f751fd    c4e18dd6   \n",
       "4 -1852466777      0 2014-10-21  1005           0  1fbe01fe    f3845767   \n",
       "\n",
       "  site_category    app_id app_domain ...  device_type device_conn_type    C14  \\\n",
       "0      76b2941d  ecad2386   7801e8d9 ...            1                0  18993   \n",
       "1      f028772b  ecad2386   7801e8d9 ...            1                0  16208   \n",
       "2      3e814130  ecad2386   7801e8d9 ...            1                0  17654   \n",
       "3      50e219e0  febd1138   82e27996 ...            1                0  21611   \n",
       "4      28905ebd  ecad2386   7801e8d9 ...            1                0  15706   \n",
       "\n",
       "   C15  C16   C17  C18  C19     C20  C21  \n",
       "0  320   50  2161    0   35      -1  157  \n",
       "1  320   50  1800    3  167  100075   23  \n",
       "2  300  250  1994    2   39  100083   33  \n",
       "3  320   50  2480    3  297  100111   61  \n",
       "4  320   50  1722    0   35      -1   79  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import gzip\n",
    "\n",
    "parse_date = lambda val : pd.datetime.strptime(val, '%y%m%d%H')\n",
    "\n",
    "with gzip.open('train.gz') as f:\n",
    "    train = pd.read_csv(f, parse_dates = ['hour'], date_parser = parse_date, dtype=types_train, skiprows = skip_values)\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000000, 24)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                           int32\n",
       "click                        int32\n",
       "hour                datetime64[ns]\n",
       "C1                           int32\n",
       "banner_pos                   int32\n",
       "site_id                     object\n",
       "site_domain                 object\n",
       "site_category               object\n",
       "app_id                      object\n",
       "app_domain                  object\n",
       "app_category                object\n",
       "device_id                   object\n",
       "device_ip                   object\n",
       "device_model                object\n",
       "device_type                  int32\n",
       "device_conn_type             int32\n",
       "C14                          int32\n",
       "C15                          int32\n",
       "C16                          int32\n",
       "C17                          int32\n",
       "C18                          int32\n",
       "C19                          int32\n",
       "C20                          int32\n",
       "C21                          int32\n",
       "dtype: object"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.dtypes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Target feature -> click\n",
    "\n",
    "site features -> site_id, site_domain, site_category\n",
    "\n",
    "app feature -> app_id, app_domain, app_category\n",
    "\n",
    "device feature -> device_id, device_ip, device_model, device_type, device_conn_type\n",
    "\n",
    "anonymized categorical features -> C14-C21"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    830423\n",
       "1    169577\n",
       "Name: click, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['click'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2223cdc18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "sns.countplot(x='click',data=train, palette='hls')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.830423\n",
       "1    0.169577\n",
       "Name: click, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['click'].value_counts()/len(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Click through rate is approx. 17%, and approx. 83% is not clicked. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count                 1000000\n",
       "unique                    240\n",
       "top       2014-10-22 09:00:00\n",
       "freq                    11144\n",
       "first     2014-10-21 00:00:00\n",
       "last      2014-10-30 23:00:00\n",
       "Name: hour, dtype: object"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.hour.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data covers 10 days of click streams data from 2014-10-21 to 2014-10-30, that is 240 hours."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2231ad780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby('hour').agg({'click':'sum'}).plot(figsize=(12,6))\n",
    "plt.ylabel('Number of clicks')\n",
    "plt.title('Number of clicks by hour');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The hourly clicks pattern looks pretty similar every day. However, there were a couple of peak hours, one is sometime in the mid of the day on Oct 22, and another is sometime in the mid of the day on Oct 28. And one off-peak hour is close to mid-night on Oct 24."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Feature engineering for date time features\n",
    "\n",
    "#### Hour\n",
    "\n",
    "Extract hour from date time feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223292f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train['hour_of_day'] = train.hour.apply(lambda x: x.hour)\n",
    "train.groupby('hour_of_day').agg({'click':'sum'}).plot(figsize=(12,6))\n",
    "plt.ylabel('Number of clicks')\n",
    "plt.title('click trends by hour of day');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In general, the highest number of clicks is at hour 13 and 14 (1pm and 2pm), and the least number of clicks is at hour 0 (mid-night). It seems a useful feature for roughly estimation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>hour_of_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "\n",
       "  site_category    app_id app_domain     ...      device_conn_type    C14  \\\n",
       "0      76b2941d  ecad2386   7801e8d9     ...                     0  18993   \n",
       "1      f028772b  ecad2386   7801e8d9     ...                     0  16208   \n",
       "2      3e814130  ecad2386   7801e8d9     ...                     0  17654   \n",
       "\n",
       "   C15  C16   C17  C18  C19     C20  C21  hour_of_day  \n",
       "0  320   50  2161    0   35      -1  157            0  \n",
       "1  320   50  1800    3  167  100075   23            0  \n",
       "2  300  250  1994    2   39  100083   33            0  \n",
       "\n",
       "[3 rows x 25 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's take impressions into consideration."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuMAAAGHCAYAAAAa8Fx1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmYXVWZ7/HvSwIGZIYwFlBMDqACGhDUdsKGAAq0gkC3EIZubBsQvX1b43AFUTQOrY04NQpCaCQgioDMs9oqJCBTDJgIgRRhCAmTCkLie//Yq/BQnEoqydm1U1Xfz/Ocp/ZZe3jXrlSlfmedtfeJzESSJEnS4Fup6Q5IkiRJI5VhXJIkSWqIYVySJElqiGFckiRJaohhXJIkSWqIYVySJElqiGFckpZDRGREbLMM+303Iv5fHX0aDBFxeURMaLofdYmIMyPi82X57yLingHsc3hE/LL+3kkaTkY33QFJ6pSImA38c2Ze09J2eGl7S1P9aicz/7XpPiyPzNyr6T4Mlsz8BfDKpvshaXhyZFySlkFEDInBjKHST0kaqQzjkkaUiHh1RNwQEU9ExPSI2Ldl3Q0R8c8tz1807aBMSTkmImYCM/scd+eIeKQ1/EbE+yLitn760ToN4u0R0RMRH4uIRyPioYjYPyL2jojfR8SCiPhky74nRsQFEXFeRDwdEbdGxA4t62dHxMcj4g7gTxExOiI2iYgfR8S8iLgvIj7csv0uETEtIp4q5/C10j4mIv4nIuaX79fUiNiw7/cqIlaKiE9HxP2l/5MjYq2yrrt83yZExAMR8VhEfGpJtdt8v2ZExLtbno8ux3r94vq5JBHxloj4VdlvTnknpe82b4+Inpbnm0XET8r3cn5EfLOfY38lIn4ZEWtFxDYRcWNEPFn6fd5A+idp+DOMSxoxImJl4BLgKmAD4DjgnIhYmikI+wNvBLZrbczMqcB84O9bmj8AnD3A424EjAE2BT4DfK/s/wbg74DPRMRWLdvvB/wIWBf4IfDTcn69DgH2AdYG/kp13reX4+8OfCQi9izbngKckplrAlsD55f2CcBawGbAesC/As+06fvh5fEOYCtgdaBvQH0L1VSP3cu5vHoJtfs6t5xTrz2BxzLz1qXo54tExObA5cCpwFhgR6Dti6eWfUYBPwPuB7qpvp9T+myzUkR8D3gdsEdmPgl8jurnbh2gq9SUJMO4pGHnp2WU84mIeAL4dsu6XamC4qTMfC4zr6MKVoe0O1A/vpiZCzKzXdg7iypAExHrUgXGHw7wuM8DJ2fm81Thbn2qkPp0Zk4HplOFu163ZOYFZfuvUQX5XVvWfyMz55R+7gyMzcyTynnfSxX2D26pvU1ErJ+Zf8zM37S0rwdsk5mLMvOWzHyqTd//CfhaZt6bmX8EPgEc3GeKzGcz85nMvJ3qRUHvSH5/tfv6IbBvRKxWnv8jf/veDrSf7fp9TWaem5nPZ+b8zFxsGAd2ATYB/iMz/5SZz2Zm60WbK1O9cFgXeE9m/rmlj1sAm7TZR9IIZhiXNNzsn5lr9z6Af2tZtwkwJzP/2tJ2P9Xo5kDNWcy6/wHeExGrA+8HfpGZDw3wuPMzc1FZ7g36j7Ssf4bqhcRL+lHOp4fq/Nr1cwtgkz4vUj4J9E7lOAp4BXB3meLROx3kbOBKYEpEzI2IL/cZfe+1CdX3sdf9VDcIaJ0q8nDL8p9bzqW/2i+SmbOAGVTf39WAfflbGB9oP/vaDPjDALbru8/9mbmwn/XbUL1r8dnMfK6l/WNAADdHNT3qyKWsK2mYMoxLGknmAptFROv/fZsDD5blPwGrtazbqM0xsr+DZ+aDwK+BfwAOZeBTVJbFZr0L5Xy6qM7vhe60LM8B7mt9kZKZa2Tm3qXfMzPzEKqpO18CLoiIl5fR4s9m5nbAm4B3A4e16ctcqsDfa3NgIS9+MdFWf7X72bx3qsp+wO9KQGcp+tnXHKqpMUtjDrB59H9h7AzgCODy1ulPmflwZv5LZm4CfBD4dizDLTElDT+GcUkjyU1UgftjEbFyRLwdeA9/m/N7G/DeiFitBKWjlqHGZKpR0NcCFy5/l/v1hoh4bwmFHwH+AvQ3xeNm4KlyUeeqETEqIl4TETsDRMQHImJsGWF/ouyzKCLeERGvLfOkn6KaarGozfHPBT4aEVuWdwW+AJy3mNHjF/RXu5/NpwB7AB+iZfrPUvSzr3OAd0XE+8sFoetFxI5L2Odm4CFgUkS8vFw8+ubWDTLzXKp3Hq6JiK1LHw+MiK6yyeNUL5YG0kdJw5xhXNKIUaYN7AvsBTxGNZ/8sMy8u2zydeA5qhHds6jC2tK6kGqU+MLM/NNyd7p/FwEHUQW7Q4H3lvnjL1Gmv7yH6gLF+6jO/ftUFz0CjAemR8QfqS6oPDgzn6V6Z+ACqoA7A7iRaipOX2dQvQvw83L8Z6kujh2I/mq3O4+HqN55eBPQejeSfvsZ1Ycrfbef4z0A7A38O7CA6sXYDu22bdmn93u5DfAA1fSgg9psdxZwEnBdRHRTzdu/qZznxcDxmXnf4mpJGhkis993XCVJyyAi/gB8sPXDhzp8/BOpLlb8QB3HlyQNHkfGJamDIuJ9VFMQrmu6L5KkFZ+fzCZJHRIRN1Ddf/zQPndskSSpLaepSJIkSQ1xmookSZLUEMO4JEmS1JARN2d8/fXXz+7u7qa7IUmSpGHslltueSwzxy5puxEXxru7u5k2bVrT3ZAkSdIwFhH3D2Q7p6lIkiRJDTGMS5IkSQ0xjEuSJEkNGXFzxiVJkjQ0PP/88/T09PDss8823ZV+jRkzhq6uLlZeeeVl2r/WMB4Rs4GngUXAwswcFxHrAucB3cBs4P2Z+XhEBHAKsDfwZ+DwzLy1HGcC8Oly2M9n5lml/Q3AmcCqwGXA8emnGEmSJA0LPT09rLHGGnR3d1NFxRVLZjJ//nx6enrYcsstl+kYgzFN5R2ZuWNmjivPJwLXZua2wLXlOcBewLblcTTwHYAS3k8A3gjsApwQEeuUfb5Ttu3db3z9pyNJkqTB8Oyzz7LeeuutkEEcICJYb731lmvkvok54/sBZ5Xls4D9W9onZ+U3wNoRsTGwJ3B1Zi7IzMeBq4HxZd2amfnrMho+ueVYkiRJGgZW1CDea3n7V3cYT+CqiLglIo4ubRtm5kMA5esGpX1TYE7Lvj2lbXHtPW3aJUmSNMKdeOKJfPWrXwXgM5/5DNdcc02/25555pkce+yxg9W1F6n7As43Z+bciNgAuDoi7l7Mtu1eVuQytL/0wNULgaMBNt9888X3WJIkScPKSSed1HQX+lXryHhmzi1fHwUupJrz/UiZYkL5+mjZvAfYrGX3LmDuEtq72rS368dpmTkuM8eNHbvETyWVJEnSEDN58mRe97rXscMOO3DooYe+aN3hhx/OBRdcAMDUqVN505vexA477MAuu+zC008//aJtL730UnbbbTcee+yxQel3bWE8Il4eEWv0LgN7AHcBFwMTymYTgIvK8sXAYVHZFXiyTGO5EtgjItYpF27uAVxZ1j0dEbuWO7Ec1nIsSZIkjRDTp0/n5JNP5rrrruP222/nlFNOabvdc889x0EHHcQpp5zC7bffzjXXXMOqq676wvoLL7yQSZMmcdlll7H++usPSt/rnKayIXBhmdQ+GvhhZl4REVOB8yPiKOAB4MCy/WVUtzWcRXVrwyMAMnNBRHwOmFq2OykzF5TlD/G3WxteXh6SJEkaQa677joOOOCAFwL0uuuu23a7e+65h4033pidd94ZgDXXXPOFdddffz3Tpk3jqquuelF73WoL45l5L7BDm/b5wO5t2hM4pp9jnQGc0aZ9GvCa5e6sJEmShqzMHNBdTRa33VZbbcW9997L73//e8aNG9d2mzo0cWtDSZIkqWN23313zj//fObPnw/AggUL2m73qle9irlz5zJ1ajXh4umnn2bhwoUAbLHFFvzkJz/hsMMOY/r06YPTceq/m4okSR3TPfHSftfNnrTPIPZE0opk++2351Of+hRve9vbGDVqFDvttBPd3d0v2W6VVVbhvPPO47jjjuOZZ55h1VVXfdEtD1/5yldyzjnncOCBB3LJJZew9dZb1973GGmfHj9u3LicNm1a092QJC0Dw7g0ssyYMYNXv/rVTXdjidr1MyJuafkE+n45TUWSJElqiGFckiRJaohhXJIkSWqIYVySJElqiGFckiRJaohhXJIkSWqIYVySJEnqxxVXXMErX/lKttlmGyZNmtTx4/uhP5IkSRoSFvdZA8tiSZ9PsGjRIo455hiuvvpqurq62Hnnndl3333ZbrvtOtYHw7ikEccPjpEkDcTNN9/MNttsw1ZbbQXAwQcfzEUXXdTRMO40FUmSJKmNBx98kM022+yF511dXTz44IMdrWEYlyRJktrIzJe0RURHaxjGJUmSpDa6urqYM2fOC897enrYZJNNOlrDMC5JkiS1sfPOOzNz5kzuu+8+nnvuOaZMmcK+++7b0RpewClJkiS1MXr0aL75zW+y5557smjRIo488ki23377ztbo6NEkSZKkmjRxx6u9996bvffeu7bjO01FkiRJaohhXJIkSWqIYVySJElqiGFckiRJaohhXJIkSWqIYVySJElqiLc2lCQts+6Jl/a7rolbkElSpx155JH87Gc/Y4MNNuCuu+7q+PEN45IkSRoaTlyrw8d7combHH744Rx77LEcdthhna1dGMYlSeqHI/+S3vrWtzJ79uzaju+ccUmSJKkhhnFJkiSpIU5TkaSaOdVBktQfR8Yl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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223237160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['hour_of_day', 'click']).size().unstack().plot(kind='bar', title=\"Hour of Day\", figsize=(12,6))\n",
    "plt.ylabel('count')\n",
    "plt.title('Hourly impressions vs. clicks');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There is nothing shocking here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>hour_of_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "\n",
       "  site_category    app_id app_domain     ...      device_conn_type    C14  \\\n",
       "0      76b2941d  ecad2386   7801e8d9     ...                     0  18993   \n",
       "1      f028772b  ecad2386   7801e8d9     ...                     0  16208   \n",
       "2      3e814130  ecad2386   7801e8d9     ...                     0  17654   \n",
       "\n",
       "   C15  C16   C17  C18  C19     C20  C21  hour_of_day  \n",
       "0  320   50  2161    0   35      -1  157            0  \n",
       "1  320   50  1800    3  167  100075   23            0  \n",
       "2  300  250  1994    2   39  100083   33            0  \n",
       "\n",
       "[3 rows x 25 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have click and impression. We can calculate Click-through rate (CTR). CTR is the ratio of ad clicks to impressions. It measures the rate of clicks on each ad."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Hourly CTR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223054b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "df_click = train[train['click'] == 1]\n",
    "df_hour = train[['hour_of_day','click']].groupby(['hour_of_day']).count().reset_index()\n",
    "df_hour = df_hour.rename(columns={'click': 'impressions'})\n",
    "df_hour['clicks'] = df_click[['hour_of_day','click']].groupby(['hour_of_day']).count().reset_index()['click']\n",
    "df_hour['CTR'] = df_hour['clicks']/df_hour['impressions']*100\n",
    "\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='hour_of_day', data=df_hour)\n",
    "plt.title('Hourly CTR');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One of the interesting observations here is that the highest CTR happened in the hour of mid-night, 1, 7 and 15. If you remember, around mid-night has the least number of impressions and clicks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Day of week"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223ba4080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train['day_of_week'] = train['hour'].apply(lambda val: val.weekday_name)\n",
    "cats = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']\n",
    "train.groupby('day_of_week').agg({'click':'sum'}).reindex(cats).plot(figsize=(12,6))\n",
    "ticks = list(range(0, 7, 1)) # points on the x axis where you want the label to appear\n",
    "labels = \"Mon Tues Weds Thurs Fri Sat Sun\".split()\n",
    "plt.xticks(ticks, labels)\n",
    "plt.title('click trends by day of week');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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L37xi2y77baT0nYDtyRJkqa8bbfdlg984AO87GUvY9q0aeywww7MnDnzceutttpqnHnmmbzzne/kt7/9LWuuueYi0wVuvfXWfO5zn+NNb3oT//3f/82znvWsztue3jWOK49Zs2bVnDlzBt0MdcQebkmSVh4/+9nPeO5znzvoZiyVsdqa5PKqmrWkbR3DLUmSJHXIwC1JkiR1yMAtSZIkdcjALUmSJHXIWUokLRUvWJUkadnYwy1JkiR1yMAtSZKkofaNb3yDrbfemi233JLjjjtuwvfvkBJJkiRNCRM9fHFphis++uijHH744cyePZsZM2aw00478YY3vIFtttlmwtphD7ckSZKG1qWXXsqWW27JFltswWqrrcb+++/POeecM6HHMHBLkiRpaN16661suummj72eMWMGt95664Qew8AtSZKkoVVVj6slmdBjGLglSZI0tGbMmMEtt9zy2Ot58+bxjGc8Y0KPYeCWJEnS0Nppp524/vrruemmm3jooYc444wzeMMb3jChx3CWEkmSJA2tVVZZhU9+8pPssccePProo7ztbW9j2223ndhjTOjeJEmSpGU0qLsO77XXXuy1116d7d8hJZIkSVKHDNySJElShwzckiRJUocM3JIkSVKHDNySJElShwzckiRJUocM3JIkSRpab3vb29hoo43YbrvtOjuG83BLkiRpajh6nQne371LXOWQQw7hiCOO4KCDDprYY/exh1uSJElD66UvfSnrr79+p8cwcEuSJEkdMnBLkiRJHVpi4E5ycpI7k1zTVzszyZXtcXOSK1t9ZpLf9i37t75tdkxydZK5SU5IklZfP8nsJNe3n+u1etp6c5NcleQFE//2JUmSpG4tTQ/3KcCe/YWqenNVbV9V2wNnAV/uW3zDyLKqentf/dPAYcBW7TGyzyOBC6pqK+CC9hrgNX3rHta2lyRJklYoSwzcVXURsGCsZa2X+o+B0xe3jyQbA2tX1cVVVcBpwD5t8d7Aqe35qaPqp1XPJcC6bT+SJEnShDjggAPYddddue6665gxYwYnnXTShB9jeacFfAlwR1Vd31fbPMmPgfuAD1bV94BNgHl968xrNYCnVdXtAFV1e5KNWn0T4JYxtrl9dCOSHEavF5zNNttsOd+SJEmSBmIppvGbaKefvth+4wmxvBdNHsCivdu3A5tV1Q7Ae4DPJ1kbyBjb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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223bda160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['day_of_week','click']).size().unstack().reindex(cats).plot(kind='bar', title=\"Day of the Week\", figsize=(12,6))\n",
    "ticks = list(range(0, 7, 1)) # points on the x axis where you want the label to appear\n",
    "labels = \"Mon Tues Weds Thurs Fri Sat Sun\".split()\n",
    "plt.xticks(ticks, labels)\n",
    "plt.title('Impressions vs. clicks by day of week');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tuesdays have the most impressions and clicks, then Wednesdays, followed by Thursdays. Mondays and Fridays have the least number of impressions and clicks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Day of week CTR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>hour_of_day</th>\n",
       "      <th>day_of_week</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "\n",
       "  site_category    app_id app_domain     ...         C14  C15  C16   C17  C18  \\\n",
       "0      76b2941d  ecad2386   7801e8d9     ...       18993  320   50  2161    0   \n",
       "1      f028772b  ecad2386   7801e8d9     ...       16208  320   50  1800    3   \n",
       "2      3e814130  ecad2386   7801e8d9     ...       17654  300  250  1994    2   \n",
       "\n",
       "   C19     C20  C21  hour_of_day  day_of_week  \n",
       "0   35      -1  157            0      Tuesday  \n",
       "1  167  100075   23            0      Tuesday  \n",
       "2   39  100083   33            0      Tuesday  \n",
       "\n",
       "[3 rows x 26 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223aa1828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_click = train[train['click'] == 1]\n",
    "df_dayofweek = train[['day_of_week','click']].groupby(['day_of_week']).count().reset_index()\n",
    "df_dayofweek = df_dayofweek.rename(columns={'click': 'impressions'})\n",
    "df_dayofweek['clicks'] = df_click[['day_of_week','click']].groupby(['day_of_week']).count().reset_index()['click']\n",
    "df_dayofweek['CTR'] = df_dayofweek['clicks']/df_dayofweek['impressions']*100\n",
    "\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='day_of_week', data=df_dayofweek, order=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])\n",
    "plt.title('Day of week CTR');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "While Tuesdays and Wednesdays have the highest number of impressions and clicks, their CTR are among the lowest. Saturdays and Sundays enjoy the highest CTR. Apparently, people have more time to click over the weekend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>hour_of_day</th>\n",
       "      <th>day_of_week</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "\n",
       "  site_category    app_id app_domain     ...         C14  C15  C16   C17  C18  \\\n",
       "0      76b2941d  ecad2386   7801e8d9     ...       18993  320   50  2161    0   \n",
       "1      f028772b  ecad2386   7801e8d9     ...       16208  320   50  1800    3   \n",
       "2      3e814130  ecad2386   7801e8d9     ...       17654  300  250  1994    2   \n",
       "\n",
       "   C19     C20  C21  hour_of_day  day_of_week  \n",
       "0   35      -1  157            0      Tuesday  \n",
       "1  167  100075   23            0      Tuesday  \n",
       "2   39  100083   33            0      Tuesday  \n",
       "\n",
       "[3 rows x 26 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### C1 feature\n",
    "\n",
    "C1 is one of the anonymized categorical features. Although we don't know its meaning, we still want to have a look its distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1005    0.918462\n",
      "1002    0.055026\n",
      "1010    0.022414\n",
      "1012    0.002856\n",
      "1007    0.000873\n",
      "1001    0.000245\n",
      "1008    0.000124\n",
      "Name: C1, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(train.C1.value_counts()/len(train))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "C1 value = 1005 has the most data, almost 92%. Let's see whether we can find value of C1 indicates something about CTR."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for C1 value: 1001,  click through rate: 0.02040816326530612\n",
      "for C1 value: 1002,  click through rate: 0.2116454039908407\n",
      "for C1 value: 1005,  click through rate: 0.1690423773656395\n",
      "for C1 value: 1007,  click through rate: 0.048109965635738834\n",
      "for C1 value: 1008,  click through rate: 0.1532258064516129\n",
      "for C1 value: 1010,  click through rate: 0.094985277058981\n",
      "for C1 value: 1012,  click through rate: 0.16701680672268907\n"
     ]
    }
   ],
   "source": [
    "C1_values = train.C1.unique()\n",
    "C1_values.sort()\n",
    "ctr_avg_list=[]\n",
    "for i in C1_values:\n",
    "    ctr_avg=train.loc[np.where((train.C1 == i))].click.mean()\n",
    "    ctr_avg_list.append(ctr_avg)\n",
    "    print(\"for C1 value: {},  click through rate: {}\".format(i,ctr_avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223bbb668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['C1', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='C1 histogram');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223230f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_c1 = train[['C1','click']].groupby(['C1']).count().reset_index()\n",
    "df_c1 = df_c1.rename(columns={'click': 'impressions'})\n",
    "df_c1['clicks'] = df_click[['C1','click']].groupby(['C1']).count().reset_index()['click']\n",
    "df_c1['CTR'] = df_c1['clicks']/df_c1['impressions']*100\n",
    "\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='C1', data=df_c1)\n",
    "plt.title('CTR by C1');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The average CTR in the data is 0.17."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.169577"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['click'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     7.000000\n",
       "mean     12.349054\n",
       "std       7.041038\n",
       "min       2.040816\n",
       "25%       7.154762\n",
       "50%      15.322581\n",
       "75%      16.802959\n",
       "max      21.164540\n",
       "Name: CTR, dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_c1.CTR.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The important C1 values and CTR pairs are:\n",
    "\n",
    "1005: 92% of the data and 0.17 CTR\n",
    "\n",
    "1002: 5.5% of the data and 0.21 CTR\n",
    "\n",
    "1010: 2.3% of the data and 0.096 CTR\n",
    "\n",
    "1002 has a much higher than average CTR, and 1010 has a much lower than average CTR, it seems these two C1 values are important for predicting CTR."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Banner position\n",
    "\n",
    "I have heard that there are many factors that affect the performance of your banner ads, but the most influential one is the banner position. Let's see whether it is true."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    0.718949\n",
      "1    0.279209\n",
      "7    0.001108\n",
      "2    0.000361\n",
      "4    0.000200\n",
      "5    0.000124\n",
      "3    0.000049\n",
      "Name: banner_pos, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(train.banner_pos.value_counts()/len(train))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for banner position: 0,  click through rate: 0.16418828039262867\n",
      "for banner position: 1,  click through rate: 0.18292748442922685\n",
      "for banner position: 2,  click through rate: 0.09695290858725762\n",
      "for banner position: 3,  click through rate: 0.1836734693877551\n",
      "for banner position: 4,  click through rate: 0.185\n",
      "for banner position: 5,  click through rate: 0.1532258064516129\n",
      "for banner position: 7,  click through rate: 0.3240072202166065\n"
     ]
    }
   ],
   "source": [
    "banner_pos = train.banner_pos.unique()\n",
    "banner_pos.sort()\n",
    "ctr_avg_list=[]\n",
    "for i in banner_pos:\n",
    "    ctr_avg=train.loc[np.where((train.banner_pos == i))].click.mean()\n",
    "    ctr_avg_list.append(ctr_avg)\n",
    "    print(\"for banner position: {},  click through rate: {}\".format(i,ctr_avg))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The important banner positions are:\n",
    "\n",
    "position 0: 72% of the data and 0.16 CTR\n",
    "\n",
    "position 1: 28% of the data and 0.18 CTR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2232192e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['banner_pos', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='banner position histogram');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223ff19b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_banner = train[['banner_pos','click']].groupby(['banner_pos']).count().reset_index()\n",
    "df_banner = df_banner.rename(columns={'click': 'impressions'})\n",
    "df_banner['clicks'] = df_click[['banner_pos','click']].groupby(['banner_pos']).count().reset_index()['click']\n",
    "df_banner['CTR'] = df_banner['clicks']/df_banner['impressions']*100\n",
    "sort_banners = df_banner.sort_values(by='CTR',ascending=False)['banner_pos'].tolist()\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='banner_pos', data=df_banner, order=sort_banners)\n",
    "plt.title('CTR by banner position');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     7.000000\n",
       "mean     18.428217\n",
       "std       6.894499\n",
       "min       9.695291\n",
       "25%      15.870704\n",
       "50%      18.292748\n",
       "75%      18.433673\n",
       "max      32.400722\n",
       "Name: CTR, dtype: float64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_banner.CTR.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although banner position 0 and 1 have the highest number of impressions and clicks, banner 7 enjoys the highest click through rate. Increasing the number of ads placed on banner position 7 seems to be a good idea."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Site features\n",
    "\n",
    "#### site id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 2624 sites in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} sites in the data set\".format(train.site_id.nunique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The top 10 site ids that have the most impressions\n",
      "85f751fd    0.360413\n",
      "1fbe01fe    0.159926\n",
      "e151e245    0.064992\n",
      "d9750ee7    0.024076\n",
      "5b08c53b    0.022792\n",
      "5b4d2eda    0.019417\n",
      "856e6d3f    0.019001\n",
      "a7853007    0.011380\n",
      "b7e9786d    0.009176\n",
      "6399eda6    0.008599\n",
      "Name: site_id, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The top 10 site ids that have the most impressions')\n",
    "print((train.site_id.value_counts()/len(train))[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for site id value: 85f751fd,  click through rate: 0.1196266505370228\n",
      "for site id value: 1fbe01fe,  click through rate: 0.2047071770693946\n",
      "for site id value: e151e245,  click through rate: 0.2956363860167405\n",
      "for site id value: d9750ee7,  click through rate: 0.28310350556570857\n",
      "for site id value: 5b08c53b,  click through rate: 0.4668304668304668\n",
      "for site id value: 5b4d2eda,  click through rate: 0.12432404593912551\n",
      "for site id value: 856e6d3f,  click through rate: 0.040629440555760225\n",
      "for site id value: a7853007,  click through rate: 0.10439367311072056\n",
      "for site id value: b7e9786d,  click through rate: 0.07301656495204882\n",
      "for site id value: 6399eda6,  click through rate: 0.10291894406326317\n"
     ]
    }
   ],
   "source": [
    "top10_ids = (train.site_id.value_counts()/len(train))[0:10].index\n",
    "click_avg_list=[]\n",
    "\n",
    "for i in top10_ids:\n",
    "    click_avg=train.loc[np.where((train.site_id == i))].click.mean()\n",
    "    click_avg_list.append(click_avg)\n",
    "    print(\"for site id value: {},  click through rate: {}\".format(i,click_avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7ZhX0pVzHLUKx1yRFb3OM+je+xuSLB6Jj3burwEfZWmd+QeB/6H7tzyfbvDrr5d34qq6kS4p/0I793OB09fw9UjSSqW7uipJgm5qOLoBiKtaP61ZIsn+wBFVtaKpCyVpxtnDLUmak5JsnOQZraxne+DvmXpqQEkalAm3JGmuWgs4gq6m/XzgO3RTPErSrGJJiSRJktQje7glSZKkHt3vlnbfaqutav78+UOHIUmSpPu5Cy644Maq2npl+93vEu758+ezcOHCocOQJEnS/VySH698L0tKJEmSpF6ZcEuSJEk9MuGWJEmSenS/q+GWJEnS3HDXXXexePFi7rjjjqFDWaENNtiAefPmse66667W8024JUmSNIjFixez8cYbM3/+fJIMHc6UqoqbbrqJxYsXs8MOO6zWMSwpkSRJ0iDuuOMOttxyy1mbbAMkYcstt1yjXngTbkmSJA1mNifbE9Y0RhNuSZIkqUcm3JIkSZqT3va2t/He974XgLe85S185StfWe6+H//4x3nNa14zU6Etw0GTkiRJmvPe8Y53DB3CctnDLUmSpDnhE5/4BI973OPYddddOfjgg5fZ9uIXv5jPfOYzAJx//vk8+clPZtddd2WPPfbgtttuW2bf0047jd/93d/lxhtvnJG47eGWJEnSrHfJJZfw7ne/m29961tstdVW3HzzzRx11FH32u/OO+/kec97HieddBK77747P//5z9lwww1/u/2UU07hyCOP5PTTT2fzzTefkdhNuCVJkjTrfe1rX+OAAw5gq622AmCLLbaYcr/LL7+cbbbZht133x2ATTbZ5Lfbvv71r7Nw4UK+/OUvL9PeN0tKJEmSNOtV1SpNz7ei/XbccUduu+02fvCDH0x3eCtkD7ckaY3NP/y0NT7Gj4541jREIun+aq+99mL//ffnDW94A1tuuSU333zzlPs9+tGP5tprr+X8889n991357bbbvttScnDHvYw3vve97L//vvz6U9/ml122WVGYjfhliRJ0qy3yy678OY3v5mnPvWprL322jz+8Y9n/vz599pvvfXW46STTuK1r30tv/rVr9hwww2XmS7wUY96FJ/61Kc48MAD+cIXvsDDH/7w3mNPVfV+kpm0YMGCWrhw4dBhSNJYsYdb0uq47LLLeMxjHjN0GKtkqliTXFBVC1b2XGu4JUmSpB6ZcEuSJEk9MuGW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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c223b33048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top10_sites = train[(train.site_id.isin((train.site_id.value_counts()/len(train))[0:10].index))]\n",
    "top10_sites_click = top10_sites[top10_sites['click'] == 1]\n",
    "top10_sites.groupby(['site_id', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='Top 10 site ids histogram');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c247af20f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_site = top10_sites[['site_id','click']].groupby(['site_id']).count().reset_index()\n",
    "df_site = df_site.rename(columns={'click': 'impressions'})\n",
    "df_site['clicks'] = top10_sites_click[['site_id','click']].groupby(['site_id']).count().reset_index()['click']\n",
    "df_site['CTR'] = df_site['clicks']/df_site['impressions']*100\n",
    "sort_site = df_site.sort_values(by='CTR',ascending=False)['site_id'].tolist()\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='site_id', data=df_site, order=sort_site)\n",
    "plt.title('CTR by top 10 site id');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The site_id feature seems important because the CTR for the top 10 sites, some as high as 0.47, and some as low as 0.04, and they are significantly different from overall CTR 0.16."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### site domain "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 2856 site domains in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} site domains in the data set\".format(train.site_domain.nunique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The top 10 site domains that have the most impressions\n",
      "c4e18dd6    0.373743\n",
      "f3845767    0.159926\n",
      "7e091613    0.081999\n",
      "7687a86e    0.032128\n",
      "98572c79    0.024894\n",
      "16a36ef3    0.021436\n",
      "58a89a43    0.019001\n",
      "b12b9f85    0.009287\n",
      "9d54950b    0.009274\n",
      "17d996e6    0.008683\n",
      "Name: site_domain, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The top 10 site domains that have the most impressions')\n",
    "print((train.site_domain.value_counts()/len(train))[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for site domain value: c4e18dd6,  click through rate: 0.12354746443411649\n",
      "for site domain value: f3845767,  click through rate: 0.2047071770693946\n",
      "for site domain value: 7e091613,  click through rate: 0.2581494896279223\n",
      "for site domain value: 7687a86e,  click through rate: 0.4607507470119522\n",
      "for site domain value: 98572c79,  click through rate: 0.2777777777777778\n",
      "for site domain value: 16a36ef3,  click through rate: 0.13509983205821982\n",
      "for site domain value: 58a89a43,  click through rate: 0.040629440555760225\n",
      "for site domain value: b12b9f85,  click through rate: 0.07408205017766771\n",
      "for site domain value: 9d54950b,  click through rate: 0.11063187405650204\n",
      "for site domain value: 17d996e6,  click through rate: 0.32120234941840375\n"
     ]
    }
   ],
   "source": [
    "top10_domains = (train.site_domain.value_counts()/len(train))[0:10].index\n",
    "click_avg_list=[]\n",
    "\n",
    "for i in top10_domains:\n",
    "    click_avg=train.loc[np.where((train.site_domain == i))].click.mean()\n",
    "    click_avg_list.append(click_avg)\n",
    "    print(\"for site domain value: {},  click through rate: {}\".format(i,click_avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c247b504a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top10_domain = train[(train.site_domain.isin((train.site_domain.value_counts()/len(train))[0:10].index))]\n",
    "top10_domain_click = top10_domain[top10_domain['click'] == 1]\n",
    "top10_domain.groupby(['site_domain', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='Top 10 site domains histogram');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c247cb6780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_domain = top10_domain[['site_domain','click']].groupby(['site_domain']).count().reset_index()\n",
    "df_domain = df_domain.rename(columns={'click': 'impressions'})\n",
    "df_domain['clicks'] = top10_domain_click[['site_domain','click']].groupby(['site_domain']).count().reset_index()['click']\n",
    "df_domain['CTR'] = df_domain['clicks']/df_domain['impressions']*100\n",
    "sort_domain = df_domain.sort_values(by='CTR',ascending=False)['site_domain'].tolist()\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='site_domain', data=df_domain, order=sort_domain)\n",
    "plt.title('CTR by top 10 site domain');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Similar with the site_id feature, the site_domain feature seems important as well."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### site category"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 22 site categories in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} site categories in the data set\".format(train.site_category.nunique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The top 10 site categories that have the most impressions\n",
      "50e219e0    0.408487\n",
      "f028772b    0.313889\n",
      "28905ebd    0.181906\n",
      "3e814130    0.075684\n",
      "f66779e6    0.006175\n",
      "75fa27f6    0.003969\n",
      "335d28a8    0.003412\n",
      "76b2941d    0.002638\n",
      "c0dd3be3    0.001082\n",
      "72722551    0.000697\n",
      "Name: site_category, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The top 10 site categories that have the most impressions')\n",
    "print((train.site_category.value_counts()/len(train))[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for site category value: 50e219e0,  click through rate: 0.1293725381713494\n",
      "for site category value: f028772b,  click through rate: 0.1783401138619066\n",
      "for site category value: 28905ebd,  click through rate: 0.20682110540608886\n",
      "for site category value: 3e814130,  click through rate: 0.2840758945087469\n",
      "for site category value: f66779e6,  click through rate: 0.04\n",
      "for site category value: 75fa27f6,  click through rate: 0.1111111111111111\n",
      "for site category value: 335d28a8,  click through rate: 0.08997655334114889\n",
      "for site category value: 76b2941d,  click through rate: 0.02312357846853677\n",
      "for site category value: c0dd3be3,  click through rate: 0.10536044362292052\n",
      "for site category value: 72722551,  click through rate: 0.06312769010043041\n"
     ]
    }
   ],
   "source": [
    "top10_categories = (train.site_category.value_counts()/len(train))[0:10].index\n",
    "click_avg_list=[]\n",
    "\n",
    "for i in top10_categories:\n",
    "    click_avg=train.loc[np.where((train.site_category == i))].click.mean()\n",
    "    click_avg_list.append(click_avg)\n",
    "    print(\"for site category value: {},  click through rate: {}\".format(i,click_avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c247c14a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top10_category = train[(train.site_category.isin((train.site_category.value_counts()/len(train))[0:10].index))]\n",
    "top10_category_click = top10_category[top10_category['click'] == 1]\n",
    "top10_category.groupby(['site_category', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='Top 10 site categories histogram');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c247b70a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_category = top10_category[['site_category','click']].groupby(['site_category']).count().reset_index()\n",
    "df_category = df_category.rename(columns={'click': 'impressions'})\n",
    "df_category['clicks'] = top10_category_click[['site_category','click']].groupby(['site_category']).count().reset_index()['click']\n",
    "df_category['CTR'] = df_category['clicks']/df_category['impressions']*100\n",
    "sort_category = df_category.sort_values(by='CTR',ascending=False)['site_category'].tolist()\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(y='CTR', x='site_category', data=df_category, order=sort_category)\n",
    "plt.title('CTR by top 10 site category');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Device features\n",
    "\n",
    "#### device id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 150331 devices in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} devices in the data set\".format(train.device_id.nunique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The top 10 devices that have the most impressions\n",
      "a99f214a    0.825328\n",
      "0f7c61dc    0.000557\n",
      "c357dbff    0.000474\n",
      "936e92fb    0.000352\n",
      "afeffc18    0.000212\n",
      "cef4c8cc    0.000107\n",
      "987552d1    0.000106\n",
      "28dc8687    0.000101\n",
      "d857ffbb    0.000097\n",
      "b09da1c4    0.000094\n",
      "Name: device_id, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The top 10 devices that have the most impressions')\n",
    "print((train.device_id.value_counts()/len(train))[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for device id value: a99f214a,  click through rate: 0.1735952251710835\n",
      "for device id value: 0f7c61dc,  click through rate: 0.7432675044883303\n",
      "for device id value: c357dbff,  click through rate: 0.6540084388185654\n",
      "for device id value: 936e92fb,  click through rate: 0.0625\n",
      "for device id value: afeffc18,  click through rate: 0.21226415094339623\n",
      "for device id value: cef4c8cc,  click through rate: 0.2523364485981308\n",
      "for device id value: 987552d1,  click through rate: 0.0\n",
      "for device id value: 28dc8687,  click through rate: 0.0\n",
      "for device id value: d857ffbb,  click through rate: 0.18556701030927836\n",
      "for device id value: b09da1c4,  click through rate: 0.14893617021276595\n"
     ]
    }
   ],
   "source": [
    "top10_devices = (train.device_id.value_counts()/len(train))[0:10].index\n",
    "click_avg_list=[]\n",
    "\n",
    "for i in top10_devices:\n",
    "    click_avg=train.loc[np.where((train.device_id == i))].click.mean()\n",
    "    click_avg_list.append(click_avg)\n",
    "    print(\"for device id value: {},  click through rate: {}\".format(i,click_avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c290c74400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "top10_device = train[(train.device_id.isin((train.device_id.value_counts()/len(train))[0:10].index))]\n",
    "top10_device_click = top10_device[top10_device['click'] == 1]\n",
    "top10_device.groupby(['device_id', 'click']).size().unstack().plot(kind='bar', figsize=(12,6), title='Top 10 device ids histogram');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You will see that most of device_id is a99f214a : Approx. 83% of the data, and the second major device_id is only 0.05% of the data. And there are some extremely high CTR here with device id at 0f7c61dc."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### device ip\n",
    "\n",
    "Device ip is more of a users ip address, so, there are a lot of them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 555038 device ips in the data set\n",
      "There are 5 device types in the data set\n",
      "There are 5166 device models in the data set\n",
      "There are 4 device cnn types in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} device ips in the data set\".format(train.device_ip.nunique()))\n",
    "print(\"There are {} device types in the data set\".format(train.device_type.nunique()))\n",
    "print(\"There are {} device models in the data set\".format(train.device_model.nunique()))\n",
    "print(\"There are {} device cnn types in the data set\".format(train.device_conn_type.nunique()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### device type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The impressions by device types\n",
      "1    0.922559\n",
      "0    0.055026\n",
      "4    0.019242\n",
      "5    0.003172\n",
      "2    0.000001\n",
      "Name: device_type, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The impressions by device types')\n",
    "print((train.device_type.value_counts()/len(train)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2b82c4a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[['device_type','click']].groupby(['device_type','click']).size().unstack().plot(kind='bar', title='device types');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Device type 1 gets the most impressions and clicks. And the other device types only get the minimum impressions and clicks. We may want to look in more details about device type 1. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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m4hYhubF2BaZec/C7s9g1NvjKmngOfIsSYuIcrm7TwNnD7GA9R/AZINzz4bw4yotkvrziXtJ0iATEcvRzIN+gOZyZkNCRNxP8+G4/nyIdZE3VB9XaVHmtA1JkiSpktM2JEmSpEqGZ0mSJKnSoJ7zPGrUqBw3btzC7oYkSZIWcTfffPNjmTm6r+0GdXgeN24cU6ZMWdjdkCRJ0iIuIh6o2c5pG5IkSVIlw7MkSZJUyfAsSZIkVRrUc54lSZI0dLz00ktMnz6d559/fmF3pVcjRoxg7NixLLnkkv3a3/AsSZKktpg+fTorrLAC48aNIyIWdndeJTOZNWsW06dPZ9111+3XMZy2IUmSpLZ4/vnnWXXVVQdlcAaICFZdddUFGhk3PEuSJKltBmtw7rKg/TM8S5IkaaE7/PDDOeaYYwD48pe/zNVXX93rtqeeeioHHXTQQHVtLs55liRJ0qByxBFHLOwu9MqRZ0mSJA24008/nU022YRNN92UffbZZ651+++/P+effz4AkydP5q1vfSubbropW221FU8//fRc21522WVss802PPbYYwPSb0eeJUmSNKDuvPNOjjzySK6//npGjRrF7NmzOe6441613Ysvvsiee+7JOeecw5ZbbslTTz3FMsss88r6iy66iGOPPZbLL7+cVVZZZUD6bniWJEnSgLrmmmvYY489GDVqFAAjR47scbu7776bNddcky233BKAFVdc8ZV11157LVOmTOHKK6+cq73TnLYhSZKkAZWZVVe9mNd26623Hk8//TR/+tOf2t29eTI8S5IkaUBtv/32nHvuucyaNQuA2bNn97jdG97wBmbMmMHkyZMBePrpp5kzZw4A66yzDhdeeCH77rsvd95558B0HKdtSJI6aNzEy/q13/1H79LmnkgaTDbeeGO++MUvst122zFs2DA233xzxo0b96rtllpqKc455xwOPvhgnnvuOZZZZpm5LmH3+te/njPPPJMJEyZw6aWXsv7663e875GZHS/SX+PHj88pU6Ys7G5IkvrJ8CwtXqZOncqGG264sLvRp576GRE3Z+b4vvZ12oYkSZJUyWkbkqRFhiPdkjrNkWdJkiSpkuFZkiRJqmR4liRJkioZniVJkqRKhmdJkiQtMj7ykY+w2mqr8cY3vrEjx/dqG5IkSeqI/l4Bpzc1V8bZf//9Oeigg9h3333bWruL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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2b8b597b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_click[df_click['device_type']==1].groupby(['hour_of_day', 'click']).size().unstack().plot(kind='bar', title=\"Clicks from device type 1 by hour of day\", figsize=(12,6));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected, most clicks happened during the business hours from device type 1. device type is definitely an important feature. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "device_type_click = df_click.groupby('device_type').agg({'click':'sum'}).reset_index()\n",
    "device_type_impression = train.groupby('device_type').agg({'click':'count'}).reset_index().rename(columns={'click': 'impressions'})\n",
    "merged_device_type = pd.merge(left = device_type_click , right = device_type_impression, how = 'inner', on = 'device_type')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "merged_device_type['CTR'] = merged_device_type['click'] / merged_device_type['impressions']*100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>device_type</th>\n",
       "      <th>click</th>\n",
       "      <th>impressions</th>\n",
       "      <th>CTR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>11646</td>\n",
       "      <td>55026</td>\n",
       "      <td>21.164540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>155802</td>\n",
       "      <td>922559</td>\n",
       "      <td>16.888026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>1829</td>\n",
       "      <td>19242</td>\n",
       "      <td>9.505249</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>300</td>\n",
       "      <td>3172</td>\n",
       "      <td>9.457755</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   device_type   click  impressions        CTR\n",
       "0            0   11646        55026  21.164540\n",
       "1            1  155802       922559  16.888026\n",
       "2            4    1829        19242   9.505249\n",
       "3            5     300         3172   9.457755"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_device_type"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The highest CTR comes from device type 0."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### app features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 3098 apps in the data set\n",
      "There are 185 app domains in the data set\n",
      "There are 25 app categories in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} apps in the data set\".format(train.app_id.nunique()))\n",
    "print(\"There are {} app domains in the data set\".format(train.app_domain.nunique()))\n",
    "print(\"There are {} app categories in the data set\".format(train.app_category.nunique()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks like app category something worth to explore."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The impressions by app categories\n",
      "07d7df22    0.647835\n",
      "0f2161f8    0.236489\n",
      "cef3e649    0.042549\n",
      "8ded1f7a    0.036035\n",
      "f95efa07    0.028202\n",
      "d1327cf5    0.003043\n",
      "dc97ec06    0.001385\n",
      "09481d60    0.001359\n",
      "75d80bbe    0.000960\n",
      "fc6fa53d    0.000566\n",
      "4ce2e9fc    0.000502\n",
      "879c24eb    0.000283\n",
      "a3c42688    0.000277\n",
      "4681bb9d    0.000163\n",
      "0f9a328c    0.000129\n",
      "a86a3e89    0.000070\n",
      "2281a340    0.000053\n",
      "8df2e842    0.000039\n",
      "79f0b860    0.000015\n",
      "0bfbc358    0.000011\n",
      "2fc4f2aa    0.000010\n",
      "7113d72a    0.000009\n",
      "a7fd01ec    0.000008\n",
      "18b1e0be    0.000004\n",
      "5326cf99    0.000004\n",
      "Name: app_category, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print('The impressions by app categories')\n",
    "print((train.app_category.value_counts()/len(train)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c2c4a002b0>"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAExCAYAAACAr/7fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsnXncXdP1/9+fJMQQiSA1BVFSQ00liPItNQYltPhSrVS1OlDVCVW/alFFW221pV9FxVxz1Bxzi5CQEISKKQlKSChV8/r9sfb1nNyc6d7nSZ5Hut6v13ndc/bZ6+x9z7DX3muvvbfMjCAIgiCoQ6/uzkAQBEHw4SGURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQlCLpaUnbpv0jJZ1RQ+ZsScfN+9wF85tQGsE8Q9JtkmZL6juP0/mYpEskvSTpVUkPSvqupN41ZBeowk3SjZK2b1Gmv6TfSJom6XVJU9PxMs1xzex4M/tK1+U4+LARSiOYJ0gaAvwPYMCu8zCd1YB7gOnAumY2ANgTGAYsMa/S7QrqKLUWr7c4sBFwewsyCwM3Ax8HRgD9gU8CLwObdGX+ggWDUBrBvGI/YBxwNjAqeyLV7v8oaayk1yTdLmmVzHmTdIikJ1Pr4ReSit7VnwJ3mdl3zex5ADN7zMw+b2avpOtdIumfqRVyh6SPp/ADgX2Bw1IN+68pfAVJl0maKekpSYdk8raopNGpBTVF0mGSZmTOr5VaWK9IeljSrplzZ0s6TdK1kv4NfFfSC5L6ZOJ8TtKk5j8paXj6D70zYbtLejATbRvgTjN7S9ImkiZI+ldK4+SS57QysLuZPWJm75vZi2Z2rJldm5OPn0g6L3O8haS70v+dLulLOTJLSLpV0ilydpL0SHr2z0r6fkHegh5IKI1gXrEfcH7adpC0bNP5fYFjgWWASSlelt3x1sKGwEjgywXpbAtcWpGX64ChwEeA+xtpmdnpaf8kM+tnZrsk5fRX4AFgRbwgPlTSDulaRwNDgI8C2wFfaCQiaaEke2NK61vA+ZLWyOTl88DP8FbQ7/Aa/XaZ818Azm3+A2Y2Dvg3sHXTtS7IHO8EXJP2fwv81sz6A6sBFxfcm22B683s9YLzhUhaGb+3vwMGARvgzzIbZ2m8JXOnmR1iPm/RmcDXzGwJYB3gllbTDrqPUBpBlyNpC2AV4GIzuw94Ai/gslxjZneY2VvAj4DNJK2UOX+imc0ys2nAb4B9CpJbGni+LD9mdpaZvZbS+gmwvqQBBdE3BgaZ2TFm9raZPQn8Cdg7nd8LON7MZpvZDOCUjOxwoB9wQpK9Bbi6Ke9jzOzOVKN/ExhNUjySlgJ2YE5FkOXCxrUkLYEriQsz53cEGq2Dd4DVJS1jZq8npZNH5f0rYV/gJjO70MzeMbOXzSyrNFbATWWXmNlRmfB3gLUl9U/38f420w+6gVAawbxgFHCjmb2Uji+gyUSF90EAkGq5s/BCZq7zwDNN57K8DCxflBFJvSWdIOkJSf8Cnk6n5urkTawCrJDMLa9IegU4Emi0lFZoylt2fwVgupm935T3FQviA5wH7CKpH66Q/tYws+VwAfDZ5FjwWeB+M3sm/c91gX+ZWeP6BwAfAx6VNF7SZwquWXr/KlgJrxAUsTOwKPDHpvDP4QrvmWSa3KzN9INuIJRG0KVIWhQv/LZMNvh/At/Ba/frZ6KulJHpBywFPJd3Hre5Z89luQkvhIr4PG7e2hYYgJuWAJR+m6d5ng48ZWZLZrYlzGyndP55YHBBPp8DVmrqf1kZeDZzPEd6ZvYscDdujvsiOaapTNxHcCW0I+WmKczscTPbBzeTnQhcmjrKm7kJNx/mnatiOm76KuJPwPXAtdnrm9l4MxuZ8nYlxaazoAcSSiPoanYD3gPWxm3cGwBrAX/D+zka7JQ6URfG+zbuydSSAX4gaWAyWX0b+EtBekcDn0yd5csBSFpd0nmSlsT7Dt7Ca9SLAcc3yb+A9080uBf4l6TDU6d3b0nrSNo4nb8Y+GHK24rAwRnZe/B+h8MkLSRpK2AX4KKS+wVwDnAYsC5wRUXcC4BDgE8Bl2TCd6bDNIWkL0galFo9r6Tg93Kudy5e+F8maU1JvSQtLR+PsVNO/CznA9tK2ktSnyS3QVOcg4HHgKvT/VxY0r6SBpjZO8C/CvIV9FBCaQRdzSjgz2Y2zcz+2diA3wP7ZjyFLsAL/Fm4m+i+TdcZA9yHd6xeg3eezoWZPQFshrcgHpb0KnAZMAF4DS+Qn8Fr+4/gHl1ZzsTt669IutLM3sML+g2Ap4CXgDPwVgrAMcCMdO4mvBP+rZSXt3H34h2T3KnAfmb2aMU9uwI3i11hZv+uiHshsBVwS8P8l/pn1gLuysQbke7H63in+N6pD2UOUj/PtsCjwFi8EL8XN9/dU5aR1N+0E/A9/DlOAtZvimPAgbhiGgMsgreonk7mwq+TcSYIej6KRZiC+Y2ks4EZTZ2j2fMGDDWzqfM1Y20g6Rt4gbxlJ6/zBO5RdFMbsnsBe5jZXp3JQxDUIVoaQdACkpaXtHky46yB17KrTEpV1/wc3tfRruvpK8CvO5OHIKhLn+ooQRBkWBj4P2BVvLC+CDdDtYWk2/D+ny82eV3VxsxubDf9IGiVME8FQRAEtQnzVBAEQVCbUBpBEARBbRa4Po1lllnGhgwZ0t3ZCIIg+FBx3333vWRmg6riLXBKY8iQIUyYMKG7sxEEQfChQtIzdeKFeSoIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNqE0giAIgtqE0giCIAhqs8AN7ssy5IhrCs89fcLO8zEnQRAECwbR0giCIAhqE0ojCIIgqE0ojSAIgqA2oTSCIAiC2oTSCIIgCGoTSiMIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNrWUhqQlJV0q6VFJUyRtJmkpSWMlPZ5+B6a4knSKpKmSHpS0YeY6o1L8xyWNyoRvJGlykjlFklJ4bhpBEARB91C3pfFb4HozWxNYH5gCHAHcbGZDgZvTMcCOwNC0HQicBq4AgKOBTYFNgKMzSuC0FLchNyKFF6URBEEQdAOVSkNSf+BTwJkAZva2mb0CjARGp2ijgd3S/kjgHHPGAUtKWh7YARhrZrPMbDYwFhiRzvU3s7vNzIBzmq6Vl0YQBEHQDdRpaXwUmAn8WdJESWdIWhxY1syeB0i/H0nxVwSmZ+RnpLCy8Bk54ZSkMQeSDpQ0QdKEmTNn1vhLQRAEQTvUURp9gA2B08zsE8C/KTcTKSfM2givjZmdbmbDzGzYoEGDWhENgiAIWqCO0pgBzDCze9LxpbgSeSGZlki/L2bir5SRHww8VxE+OCeckjSCIAiCbqBSaZjZP4HpktZIQdsAjwBXAQ0PqFHAmLR/FbBf8qIaDryaTEs3ANtLGpg6wLcHbkjnXpM0PHlN7dd0rbw0giAIgm6g7nKv3wLOl7Qw8CSwP65wLpZ0ADAN2DPFvRbYCZgKvJHiYmazJB0LjE/xjjGzWWn/G8DZwKLAdWkDOKEgjSAIgqAbqKU0zGwSMCzn1DY5cQ04qOA6ZwFn5YRPANbJCX85L40gCIKge4gR4UEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm1AaQRAEQW1CaQRBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm1AaQRAEQW1CaQRBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUppbSkPS0pMmSJkmakMKWkjRW0uPpd2AKl6RTJE2V9KCkDTPXGZXiPy5pVCZ8o3T9qUlWZWkEQRAE3UMrLY1Pm9kGZjYsHR8B3GxmQ4Gb0zHAjsDQtB0InAauAICjgU2BTYCjM0rgtBS3ITeiIo0gCIKgG+iMeWokMDrtjwZ2y4SfY844YElJywM7AGPNbJaZzQbGAiPSuf5mdreZGXBO07Xy0giCIAi6gbpKw4AbJd0n6cAUtqyZPQ+Qfj+SwlcEpmdkZ6SwsvAZOeFlacyBpAMlTZA0YebMmTX/UhAEQdAqfWrG29zMnpP0EWCspEdL4ionzNoIr42ZnQ6cDjBs2LCWZIMgCIL61GppmNlz6fdF4Aq8T+KFZFoi/b6Yos8AVsqIDwaeqwgfnBNOSRpBEARBN1CpNCQtLmmJxj6wPfAQcBXQ8IAaBYxJ+1cB+yUvquHAq8m0dAOwvaSBqQN8e+CGdO41ScOT19R+TdfKSyMIgiDoBuqYp5YFrkhesH2AC8zseknjgYslHQBMA/ZM8a8FdgKmAm8A+wOY2SxJxwLjU7xjzGxW2v8GcDawKHBd2gBOKEgjCIIg6AYqlYaZPQmsnxP+MrBNTrgBBxVc6yzgrJzwCcA6ddMIgiAIuocYER4EQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm1AaQRAEQW1CaQRBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm1AaQRAEQW1CaQRBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbWorDUm9JU2UdHU6XlXSPZIel/QXSQun8L7peGo6PyRzjR+m8Mck7ZAJH5HCpko6IhOem0YQBEHQPbTS0vg2MCVzfCLwazMbCswGDkjhBwCzzWx14NcpHpLWBvYGPg6MAE5Niqg38AdgR2BtYJ8UtyyNIAiCoBuopTQkDQZ2Bs5IxwK2Bi5NUUYDu6X9kemYdH6bFH8kcJGZvWVmTwFTgU3SNtXMnjSzt4GLgJEVaQRBEATdQN2Wxm+Aw4D30/HSwCtm9m46ngGsmPZXBKYDpPOvpvgfhDfJFIWXpTEHkg6UNEHShJkzZ9b8S0EQBEGrVCoNSZ8BXjSz+7LBOVGt4lxXhc8daHa6mQ0zs2GDBg3KixIEQRB0AX1qxNkc2FXSTsAiQH+85bGkpD6pJTAYeC7FnwGsBMyQ1AcYAMzKhDfIyuSFv1SSRhAEQdANVLY0zOyHZjbYzIbgHdm3mNm+wK3AHinaKGBM2r8qHZPO32JmlsL3Tt5VqwJDgXuB8cDQ5Cm1cErjqiRTlEYQBEHQDXRmnMbhwHclTcX7H85M4WcCS6fw7wJHAJjZw8DFwCPA9cBBZvZeakUcDNyAe2ddnOKWpREEQRB0A3XMUx9gZrcBt6X9J3HPp+Y4bwJ7Fsj/DPhZTvi1wLU54blpBEEQBN1DjAgPgiAIahNKIwiCIKhNKI0gCIKgNqE0giAIgtqE0giCIAhqE0ojCIIgqE0ojSAIgqA2oTSCIAiC2oTSCIIgCGoTSiMIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNqE0giAIgtqE0giCIAhqE0ojCIIgqE0ojSAIgqA2oTSCIAiC2oTSCIIgCGoTSiMIgiCoTSiNIAiCoDaVSkPSIpLulfSApIcl/TSFryrpHkmPS/qLpIVTeN90PDWdH5K51g9T+GOSdsiEj0hhUyUdkQnPTSMIgiDoHuq0NN4Ctjaz9YENgBGShgMnAr82s6HAbOCAFP8AYLaZrQ78OsVD0trA3sDHgRHAqZJ6S+oN/AHYEVgb2CfFpSSNIAiCoBuoVBrmvJ4OF0qbAVsDl6bw0cBuaX9kOiad30aSUvhFZvaWmT0FTAU2SdtUM3vSzN4GLgJGJpmiNIIgCIJuoFafRmoRTAJeBMYCTwCvmNm7KcoMYMW0vyIwHSCdfxVYOhveJFMUvnRJGs35O1DSBEkTZs6cWecvBUEQBG1QS2mY2XtmtgEwGG8ZrJUXLf2q4FxXhefl73QzG2ZmwwYNGpQXJQiCIOgCWvKeMrNXgNuA4cCSkvqkU4OB59L+DGAlgHR+ADArG94kUxT+UkkaQRAEQTdQx3tqkKQl0/6iwLbAFOBWYI8UbRQwJu1flY5J528xM0vheyfvqlWBocC9wHhgaPKUWhjvLL8qyRSlEQRBEHQDfaqjsDwwOnk59QIuNrOrJT0CXCTpOGAicGaKfyZwrqSpeAtjbwAze1jSxcAjwLvAQWb2HoCkg4EbgN7AWWb2cLrW4QVpBEEQBN1ApdIwsweBT+SEP4n3bzSHvwnsWXCtnwE/ywm/Fri2bhpBEARB9xAjwoMgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNqE0giAIgtqE0giCIAhqE0ojCIIgqE0ojSAIgqA2oTSCIAiC2oTSCIIgCGoTSiMIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNnUWY/vv4yYCC8Ffnbz6CIAh6GNHSCIIgCGoTSiMIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNpVKQ9JKkm6VNEXSw5K+ncKXkjRW0uPpd2AKl6RTJE2V9KCkDTPXGpXiPy5pVCZ8I0mTk8wpklSWRhAEQdA91GlpvAt8z8zWAoYDB0laGzgCuNnMhgI3p2OAHYGhaTsQOA1cAQBHA5sCmwBHZ5TAaSluQ25ECi9KIwiCIOgGKpWGmT1vZven/deAKcCKwEhgdIo2Gtgt7Y8EzjFnHLCkpOWBHYCxZjbLzGYDY4ER6Vx/M7vbzAw4p+laeWkEQRAE3UBLfRqShgCfAO4BljWz58EVC/CRFG1FYHpGbEYKKwufkRNOSRrN+TpQ0gRJE2bOnNnKXwqCIAhaoLbSkNQPuAw41Mz+VRY1J8zaCK+NmZ1uZsPMbNigQYNaEQ2CIAhaoJbSkLQQrjDON7PLU/ALybRE+n0xhc8AVsqIDwaeqwgfnBNelkYQBEHQDdTxnhJwJjDFzE7OnLoKaHhAjQLGZML3S15Uw4FXk2npBmB7SQNTB/j2wA3p3GuShqe09mu6Vl4aQRAEQTdQZ2r0zYEvApMlTUphRwInABdLOgCYBuyZzl0L7ARMBd4A9gcws1mSjgXGp3jHmNmstP8N4GxgUeC6tFGSRhAEQdANVCoNM/s7+f0OANvkxDfgoIJrnQWclRM+AVgnJ/zlvDSCIAiC7iFGhAdBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm1AaQRAEQW1CaQRBEAS1CaURBEEQ1CaURhAEQVCbUBpBEARBbUJpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtQmlEQRBENQmlEYQBEFQm0qlIeksSS9KeigTtpSksZIeT78DU7gknSJpqqQHJW2YkRmV4j8uaVQmfCNJk5PMKZJUlkYQBEHQfdRpaZwNjGgKOwK42cyGAjenY4AdgaFpOxA4DVwBAEcDmwKbAEdnlMBpKW5DbkRFGkEQBEE3Uak0zOwOYFZT8EhgdNofDeyWCT/HnHHAkpKWB3YAxprZLDObDYwFRqRz/c3sbjMz4Jyma+WlEQRBEHQT7fZpLGtmzwOk34+k8BWB6Zl4M1JYWfiMnPCyNOZC0oGSJkiaMHPmzDb/UhAEQVBFV3eEKyfM2ghvCTM73cyGmdmwQYMGtSoeBEEQ1KRdpfFCMi2Rfl9M4TOAlTLxBgPPVYQPzgkvSyMIgiDoJtpVGlcBDQ+oUcCYTPh+yYtqOPBqMi3dAGwvaWDqAN8euCGde03S8OQ1tV/TtfLSCIIgCLqJPlURJF0IbAUsI2kG7gV1AnCxpAOAacCeKfq1wE7AVOANYH8AM5sl6VhgfIp3jJk1Ote/gXtoLQpclzZK0giCIAi6iUqlYWb7FJzaJieuAQcVXOcs4Kyc8AnAOjnhL+elEQRBEHQfMSI8CIIgqE0ojSAIgqA2oTSCIAiC2oTSCIIgCGoTSiMIgiCoTSiNIAiCoDahNIIgCILahNIIgiAIahNKIwiCIKhNKI0gCIKgNqE0giAIgtqE0giCIAhqE0ojCIIgqE3lLLdBPdYdvW7hucmjJs/HnARBEMw7oqURBEEQ1CZaGt3IlDXXKjy31qNT5mNOgiAI6hEtjSAIgqA20dL4EPKHr9+SG37QH7eezzkJguC/jWhpBEEQBLUJpREEQRDUJpRGEARBUJtQGkEQBEFtQmkEQRAEtenxSkPSCEmPSZoq6Yjuzk8QBMF/Mz1aaUjqDfwB2BFYG9hH0trdm6sgCIL/Xnr6OI1NgKlm9iSApIuAkcAj3ZqrDyG/+t/PFJ773l+uno85CYLgw4zMrLvzUIikPYARZvaVdPxFYFMzO7gp3oHAgelwDeCxgksuA7zUYjbml8z8TKun529+ptXT8zc/0+rp+ZufafX0/M2LtFYxs0GVVzCzHrsBewJnZI6/CPyuE9eb0FNlIn9xL7o7rZ6ev7gX3ZdWduvRfRrADGClzPFg4LluyksQBMF/PT1daYwHhkpaVdLCwN7AVd2cpyAIgv9aenRHuJm9K+lg4AagN3CWmT3ciUue3oNl5mdaPT1/8zOtnp6/+ZlWT8/f/Eyrp+dvfqf1AT26IzwIgiDoWfR081QQBEHQgwilEQRBENQmlEYQBEFQm1AaQbCAIGlxSb0yx70kLdadeeoKJC0laWAn5Jfpyvx0BR/mZ9Wjvac6i6SFzOydprBlzCx3RGTGrfc5M7tJ0ueBTwJTgNObr5VkegFfAj6HjyN5F3gc+KOZ3VaRv0HA4fi8Wos0ws1snq3bKmlV4BPAI2b2aE2Z/sBQ4Ekzm10Srw9wALA7sAJg+LiaMcCZefcvI7sY8D1gZTP7qqShwBpmNtccJ5I+W5ZfM7u84v+sCjxvZm+m40WBZc3s6RKZjwK/BTYD3gfuBr5jaYqbnPhLAQfj//9M4MgkOwU4Pu8+Svodfs+K/tchZf8LuBnYFng9HS8G3Ii/w4WkAvldM3ut4vqN+Gvi0/msSMczvsrMphTE7w18Bf8+rjezOzPnjjKz43JkVgZOArYBXvEg9QduAY4oelaSdgROBZ4FvgWcBywiqS8wysxurvH/PsKc3+O0ivjtfMdtPatWkdQPGIGPd2uUTTea2fvtXnOBbGlI+rSkGcBzkm6UNCRz+sYS0T8DOwPflnQuPiL9HmBj4IwCmTOBlYGfA7cC16SwoyR9qyKr5+OFyKrAT4Gn8bEpef9plqQzJG0jSRXXzcpdmdkfiX90uwBjJH2pQOa8Ru1M0g7Aw8CJwCRJe5Ykdy6wAfATYCf8Xv4UWB//eMv4M/AWXrCCD+ycqzBJ7JK2A/B7vW/azgC+UJEOwCV4wd/gvRRWxgXAxcByuEK8BLiwJP55wOLARvh7sRx+D/8DnF0gMwG4Dy94NsQ/8Mfxe/peRf4AFjGzRiFE2s+tvUpaQdI5kl7Fp5V4WNI0ST+RtFBRApIOBy4CBNyLv68CLiyZhfr/gC2Bl4FTJJ2cOVdUAfgLcAWwnJkNNbPVgeWBK1P6Rfwcf/d+ANwEHGBmqwHbAb8okUPSrpIeB54Cbse/x+vKZBK1v+MMtZ9VTj63kLR/2h+UKkF58fbC370ReAVmE3xWjUmS1q2TVi6dHVLeEzf8gX087e+Bf3jD0/HEErkH028f4AWgdzpW41yRTOZ4XPrtC0ypyOd9zdcAbi+I+1h68HfitajfNv5TRRoTM/t3Aaum/WWABwpkJjfJDKmSaeSx5Nw/KvI5ISe/hWml81cDy2eOlwcur3FPJuWEVaV1T07YuKo00rvzbFX6TedvBRbKHC8E3Frjf90JbJg53gi4uyDuLcBWaf+zwK9xJXcc3qoufI7ZvGXCFwYeL5DJvt998LECl6dvJPd7LLpWjXP3Z/ant3jfHwCWbuQJ+HTZvcjI1f6O23lWTXJHA39tfE94BebOovsOLJb2lwFuSPvrAXdVpVW0LZAtDWBhS4MAzexSYDdgtKTdKWn+A72SiWoJXOsPSOF98Q83j3ckrQYgaUPg7ZTuWxVpATTMNc9L2lnSJ/AmfB7/NrPfm9nmeG38WeBUSU9KOr4kjWwe+pjZUyl/LzFnbTtLr2QKIMWZlpEpM2nOlrRnjq32f4FCs1bi7WQmsiS3Gt7yKGOImT2fOX4B+FiFDMBMSbtm8jiSgknckj19KeBWSUdIGiJpFUmH4a3KInols89KQL9Ga1fS0ngBW8YK+DvYoF8Kq+JQ4BJJf5P0N7y2fnBB3KUtmU/NzXmfMrN/m9lRwKdK0ni/IC/LU/w+ffB/zexdMzsQmIQrrn4FMvdJOlXSpqlVtELaPxWYWJK/VyR9TdIP8PfxO5JWlDSKDlNQEe+Y2cv4s+tlZrfirbwqWvmOG7TyrLLsDuwK/BvAzJ5jzncli/CWLSn+R5LMg0D/AplKFtQ+jXckLWdm/wQws4clbYPXTFcrkTsTeBQfff4j/KE+CQynuEn8A7xAeRNXLHvDB3bOqjnHj5M0ALfl/w5/kN8piPuBScrcxnoScJKkNRppFrC+pH8l+b6N+5KUY+8CmZ+m//QHvEZ0iaQxwNbA9SVp7Y2bYE6VNDuluSReOJTlEbwGdT2wkqTzgc3xvqIybpN0A24mspTGrRUyAF8Hzpf0+3Q8A2+253Ffunbj/n8tc86AYwvkfo6/SwBfBs5IVsW18PtbxgnAREmN/7IlbvIrxczGp/6GNVJ+H7XifqSZkr6AP5vP4SYVkumzrDJ5KHBzMuNMT2ErA6tTXOhNkDTCzD54d8zsGEnPAacVyOyHmx9/ivedCH9OV+HfaRGjgKNwBbY9sA8+o8QzwFdL5MAVTj/gDvz9eBHvB6iile8YaPlZZXnbzExSo3K1eEnca4HrJd2Or0l0SZJZikx50ioL5IhwSdsCM83sgabwAcDBZvazArlVSbVbM3tO0pJ4Z9U0M7u3JD3hNbd2pjeuhaSTzey7bcgtYqnDtyl8SWAtM7u7QG4o3nn5MbxyMQO40sxuqJnu0vj7VfueJJnh+As9ro5saj02asbllP23AAAgAElEQVR3mNkVJXG/bWa/lbS5md2ZCghZzQ7gVpF3AMt8Opw+eK312abWUZHscsCm6fCeRgWoIG6RA8cjwJ/yCiN5R/Mv8c7bScAPzOz59Ay2MrPLStLrhdvHs4X5eDOr0+/SY0kF8Jv4f9oXtzScn1ofXZ3WYsB38enISx0/muS+jzulbIdXTL4MXGBmvyuIvxP+jB8ws7EprBduYqxqyefnYUFUGu0i6T4z20jSzWa2TSeuc46Z7Vdy/mTgMst4kcwrJN1vZhtKOtfMimrTXZXWysCLZvZmUqRfwjt0G4VXaa1N7hW1BV6D/3uZAsiRXcrMZlXEmWRmGzTuSd1rJ9nGR76ymR1Y5yOX9CngBTN7TNIWuEKcYmZlZi0kDSPj7WIVXm6pZdYHN6m+gpt8Lsc9j2Rmo+r+z3aQ9E0zO7VFmapvZHe8X2BWarX/ko536XtmNqNAbg7vyNSa2gSYjC+z0KUFntxRZDBws2U8uiR92czOKpH7C96K3c/M1kmm2bvNrNIcJmk7vBUF7gk1toZMSx5ypddaEJWG3B7/Q/xhXmdmF2TOnWpm3yyQm4h7Z3wF7xicAzM7OUemedZd4R1otySZXXNkZuLN5UG4LfNCMyuz07btzirpIdxr5Me4Ka35P83lnppJazfmdKusk9YmZvaGpBNxU+CVuFkLM/tyyf87FTdxNDyS/hd4wswOyom7Oe4p9T5e0zoupbUQsFdJ6+lCvD9oEPBE9pRnz9YryV9LH7mk3+CFVR/cPLIN7omzJd7ROtezkLQl8Cu84N8INw0OxG3mXzSz6c0ySe5BM1svPbdngRXM7L2kuB/I+19yF+KjUvwT8fe94RL8Ayt2ac1r7R4JHA9d+o08YmZrp/2/AONw88q2wL5mtl1B/j6oEEg6Cvgf3PPtM8AMMys0G0kajpuX1sL7YXrjfYm59n95X+IWwP24N99vGjX+qoqJpAlmNkzSRDP7RAp7wMzWL5LJyC6Hv1uGt/ByW6GSVsBNnSPxisSz6dRZwM9qmsPmxtrsQe/JG3BZulm74TbQy4C+1uRdkSO3Bu5v/TxuY59jK5C5H3ev3AovELZK8lsCWxbINLwzhgL/D3dpfTSl87ECmQtx++9wXBkOTvunAX8p+U9bpDgv426t2e2sLk7rkcz+fUCvzHGVd9LDpEpMOu4FPFwQ915gXbyQewnYIoVvSIEnSUZ2OdxLZpXmrUKuJe+uxv/Ba/+z6fBiWQh4qOi9AAal/VWBK9L+dniNsiith/BCbiDwGrBUCl+EAg8+3G7/DeCIJP89vHVzAHBLSVqv4RWdH2e+jdnz4Bt5LLN/X9O5Qi+opudzP7B45r5PLpJrPGO84jIRVxj744VrUfzJuHMJeN/dtcCvm/NRIHsXsCipPMIrPfeWyaR4X8EdU84GRuN9UV8uiNuWh1xlHtoV7Mlb80uFd2rfibvTFSqNTPwdW0irF97pNRbYIIU9WSEzVx5wN7if42ui58m07c6a4hzQwn9qKy28Rr112r+MVBCn+16lNC4nU3DjBfmFBXGzBcOUpnOVz7fNd6qlj5ykGPCCezawaDruTUa5NslkXTZ7M6f7aK4CTee+AzyJt14PwQeO/SkVakfXuIfTis7lyK0MXIq3ThqKsOp9b+cb+T/gmHTPfwXslsI/TYk7K175+gTeUnug6VyVy22jYpB9DoWuqTnvXm+8k/6SsueV4m6HjwWZiY/zeJpUwFfIPYb3nzaOly76XnP+/32Z/Ufb/hbaFezJG97E7tUUNgqv/T3T5jX3rzg/OL0sv2/+CHPiltZCCmTG4YMNs7X3XrgZZ64xBDnyBwFLZo4HAt/syrTwmuqteC32r3hheQtec9umQOaveGvwduAN4La0vQHcVCDzQGZ/t6ZzubX4dK5fKogeAl5NH+w44Es17l9LHzleqP4NHzP0i/Q/f4QPLv1jgcxZqdD5PF6bPzmFL1b1keMmyxXS/pL4+KRNSuLfhzs5bIy31oal8NUpGJPUJD8Sr4jtQYUCaPMbWQj3GJuWtvfxVs4FeL9SkdytTdvyKXxpKpY6Te/twsA5uHfidyhvTV5NTksJr8m/X+N+LI0PgP0MsEzNe3gzPqSgcbxwyXdyEz7YdQV8dPxlKVzUqGgWbQtqn8ZJeHP+pqbwEfga40PbuOY0M1u5Rrydgc3N7MiSOFuY2d8l9bWaHgxyP/8T8f6BhjvrAPzDOMLS+IsS+UnWZH/P2lMr0gIviOqmtRZzel2Nt4JpC5IdvxAzuz1HZlf8Q3mjKXw14HNmdlJBWmPwUcY3AXvhTfWLSLb9smeW5Fvy7pK0mf8FG5fytjteAF6adz/kI7G/SvJ2wc2H76X+k4+Y2TNl6bWC3AX9VLww/ipeQK6Pu4t+1czG1LjGYrhL7KZmVja2o1mu8htpij8ANwO17cWUPNn6Nr8zTXFWwcf6LIzfjwHAqWY2tSD+ogBm9p+ccyua2bNzS5XmcU0rcHrI9CVtgJtmx+B9GiPxFu/Xc2QaHnJr4e9TbQ+50nwuoEpjDtfKFuQeLDqF9zX0rXGN1fGPb4qZPVIQp+Gl1bIXT5Jvx531QWB9a1Q1/CN60Mw+3tVptUvdDr5OXH+OjkZJ481s4+SC+IiZrVnzOsfXLfAyMrXm78rEXxhYE78Xj5nZ2yVx18NHWa+Id7Yf3khD0r1mtknNPC4DzLZ54DqbCrB/mdkrqVIyDG89PVQi06732XIA5uORBuGd4Y9Z51b9zEtnPfOBcl11vcKKqaSjy2TNbK6xP5JONLPDJe1lZhd3VT7bap709I2OKRxasm/jtYwNmLuTdAjuA1/UHF4m7X8Rn2bhDNye/K0CmXF4R/QLwCnNW418roPXlPdrbDVkfoGbBrbBWxAXA7+qkKlt0krnXwP+VbRVpNVKB996mf2F8JbCVbgHz2IladxFR6f5LqRpFdJxkV14rueDezeVPiu847fxXuyAD4S7Ce932LPiXuyU4t+Gm8SmUdLPBvwdn19oSeD7uBl2tXSuqkN2MdwZ4/R0PBT4TEn8NXHFdA3er3M23hq9Fx/3kydzBD6f06PpOT+Km+EeBr5bIPOb9LzuxQdQ3pXyeRPwi5L8fS2l9TTe0X8PbvZ7jIJ+Pbx19XN87rTPN507tSSt94CpKX9rV32DJe/TKbjXVuk30uqGl0EL0cX9fF12oZ604d4/T+ND5x/MbJMpsdemF3mLgnMXFIQ/lNkfT+qkSh9j0XxVy+CDsZ7B+1rm2Cr+29G4onoBVzz/xM0dVfekFz4S+lK8k/prpLm1SmTy5miq7I/B+w2+iU9v0D99vIdVyLTSwZftIP5VKri2xL1DzilJY71UCL2CF7RrpPBBwCEFMjNwBbBf5hnNrHpWtDl/V4rzKLB65ng1Svo0mp8T3ln8OF4zLy0w8L6Tw+jouF8077ln4t+BK9x90vu7N94S3wUfq5An83C67tJ4xaLhIbY4xZ5kLXufNe57klkanzZkuRQ+sOh/0b635US8AvczXHk8gCvIISUyrwEHkvPdAy+VyA1IeXwU94R8Ge+7PYFMxa5J5hd43927zFmBe41OKKi2hD4MG226VraRzkRgxbR/Kz57JbgnRZUHxfptpDcZVwAPpONlgb/Oo3v4IHO6wVb+pxQvb3K/0s56Wuvgy3r+TCJNoJcKmcpO3BbvwRJ4rfeCzHOu7PhNhV7/tP935nQqqHov7mg6VnNY0/kHgAFNYevhiuPlirRadSXOxpvadC63gKVjItDewItN96JIabTsfdach+b/QfHkiG15Wzafw02rJ+OtxFyvK9wx5JMF554qSesGfDjAcpmw5XAlNbbiGY+pel9b2RbUuacwt4dXDpQpo07/BN5hdqOky/CC4hZJ1+N21D9X5PGB5jBJPzazY0rE/mNm70t6N9nJXwQ+WvIf7sfdWS80syeK4hVwA3CxpD/itvWvUz73VIP3JO2LdzIbXivNtZNnOvieBe5JndVG6uAruP6ANGK4F14jfAe8x1lpTp4yJC2Lm7JWMLMdJa0NbGZmc81pZD6C9lBJGwHnSbqGeksKtDx/lzrWCXlY0rW4CdFwT7ayqbZPxDs7x2Xy/WDq7P5/FflsdaLI7HxlzQP5iiZivF/SBXjL4mZ88tDr8XtR9F1dI5/IbxHc3HuxpHF4i/KOkvy9r451dHZuBEpahOLn1lc+QeH7AGb2M/nSCndQPKEiMOf8TeZTDd0r6XsUT/q4Bz5VyVyYWe4U54khZnZiU/x/AicoTZNewqHKTCeU7sVyVrJ+TBkLakf4ZMoXs8kd+SufIG5PM3tJ0hfxD+4OfA6g0614fpcBuJtk1mNojNVc5KjpWqVeWvKR00fiZoHv4U3wSWaW++JIegpvbu+Fm7IuxAfoPVcjL71wM9Y2+AdyIz4VQ2lHaero/C0+6aDhheaheS9pmx18zcr4CDN7IXWAnm8VU8BIug5X6D8ys/XlI6knmlnpGgOShJvdNjOzynU7UqXjq9Scvyvnf2UxKxlR3y7yKSmOwj22biRNFGkFC4hJ+hp+j19vCl8dn9ft0ByZPrjiM9w8ugn+vUwD/mBm/y5IqyXvsySzMt7/+G5T+Ip4n8tNOTJteVtK+rxlZptoFfnEgWb1HCNuxPtzRpvZCylsWXyqnu3MbNsS2Ql46+btdLwwPgh247Yy3pXNlp6y0WGKOilt66btBODHJXIt90/kXGPxGnGKOotfw+eHyZPZPP32zYQNIdMpXCCXba7/D+5m+U/clHZgjbwuSrL9Lygb7pkFTWau7s5XJ/7Pcvho/T/gJpWf4GbMi8msN1Ii3/J4gU7kteX3Kf2/XfF+k+VqyqxKMhVn0h1SEPfb6Xfz+fCsVsZb4DNx8+FU3FpwUVH+ktxAvEX5KG6um433aZxImgGgRLbl9WNKrzevb1J3buRMKZEXljnXmf6JzfCm9rR0vD4Fnhd4bWnZgnPTC8IbC7206hGWN/q8N+5t8+cK2V3xDuqn0vEG+LKe7TyLXGVNGx18TfLteJLdRsZejXcYFy1+tVL6oP+Gt/CyiyNdWZHODvi0HKs0hed6hWXOfxQfDDgzFShjwBfPKoh/PT546wi8H+rwVDh9ixJ7Nl4YNzqKB+FTTXy85vNcBPeuOxX3TjqLgmlpMjK7tPo+0YJXXZPcBObuIxtfELddb8vJzOloM8dWIHM3Pki2dyasN245KFzUqzMbPhJ/18zxSAqcFmpdb15ksqdseCfpFpnjT1LuGbIV3i9xDD5q9S58jp2xwPcr0ronFTDZ2mtRJ99xFIzWBU4sCG/LTRe4qBP37z68UM/+p7Y6mikYAUznOviOpj1Psg1xk9mr6fcfFLTY0rP/eirgfpfeiUYLtGy6jeNx0+Zv8MkRv5U5V+XRNA533+6Tti9QPhK/bEqQIo+hll1Tm+QvwV1Nn8A9f24EftvV7xMteNVV/W+KV6ps19uyZYsGba5ImImzLO7leV06XrvqeeHed+Nw5Ts9vcOrVaVVeL12BT8MG2n+mfRCPIUrkQ0rZAakj+jXqZA4HFizRlr3pN/ay5W2+F/adtPtRJp5/6nsI2rH7FY2z1Vp4UAnPMnwwvjjeEtlruVLM/GaPWu+QBoHQblnTWcms2t1adnstCrHNZ0rqvG27JraJD8xe33cFbZwosN23qd0vrZXXZNcS7VrOuFtSQsWDbzVeireT7pC2jZNYRfXSOs6vGXdeOf7UDERY0a2H7BEnbhl2wLrPQVgZvfhK9f1xzv9X60h8yrFq4mVMV3SJwFLHU2H4GaWuZAvC1uWh/tzwl4CLpI0xXK8rsqQrxC2Iv7Rvp4Jn2M1tRweki/o01u+fsQheC2liFeAjS111DXlIXdab+AZ+dKpeR18RTINWvIkS9fuj48TeAIv/BvhRaN7F8p6npjZeZL+ibeQylZN62OpM9Z8FPQuwOmSLqHAyyh1jEJaWpYO77P/pXxp2TGS+pnZ6+bLtTautzreisrjHfMpNd6Q9IR1rHI5u44HGh1LnL4iaR28lTekQqb2+9SmV12WxuqMf0jH03HzZS7W5G0pacO877CAxZWmBkqyn6T43Wh3RcIGy5jZxZJ+mPL9rqQiz8RNcc/PfyUPuR8AG0p6BDi+TnmYS2e1Tk/c8JdxpS6+ZulUwnhL4HzcVPIiPiBs6YK4t6btbvzjm4A33d/BFx8qS+djeO2r4ce+HnBUxb14DF/X4mlgZOZclZlkMXzg0vi0HUemczEnfjtmt2wH3yxa6+A7Fa/Ffx3vVJxIST8NXkN7Dm9xPowruNJ7gbtUb5kT/glKzGe0MZkd3hp+Mv02b7UmBWzhfZ5Ax/iWwZnwRajRQsb7GgbirqVPpnf+6131PpGzNAEVyxQUXKeydo2bK7PbRnhB/gkqLBNJPmvReJoaFo1OPLfbqN8f9zAdrd3TcVPpFukeXt5uHhZUl9tXcfvkE7i98hIzm1lDbqmiU/iHVLVYfEtIugifr39yOl4H7zv5UonM7XiN4f+sY/GWh8xsnYL4k3EX0deTK+ylwLnmc3PlTljY01HHcq0fTPiY/lt/K5kLSNIkfDqO5yVtgs9meqSZXd7V90JdPJldC+nujJvdFmmEWc64n3ZcUz9MyOdMO5rMSpDAMZYz6aGk93Gbf3Z8yvAUZma2dc00Ky0akn5H+XCAQyrS2BA3m6+Dz9Y8CNgj771PVom10v4c89wpZwLTutQZpPRh5El8GuZj8VrAI5KulzRK0hIlcjPpqPU3tglp+0iegKTFJB0m6QeSFklpXCXpJPka1GWs2VAYAOaTt1U9yMVs7vXKy5ZR7W3JJGU+TmIrYEf5krO5i8tLulzSF2rkP0/2U5LWSPtbSPp+KsiK4i8l6ceSDpBzpKSrJf1CvkRlHqek3w9W6DOzp8sURqK3pfW50z38NPAjSYdQ8iGnfI6Wr6veOB4oqXA5TzP7T7PCkK/0RjsKI42nqIrzR9yU9S382e6J2+Xz8jetWWE08tauwlDBIDNJvSV9TdKxyXSTPXdUgcwASSdIelTSy2mbksKWzJNpouHW+jl8QN1MfMqUPPbCW/m/MLNPm9mngX+m/UKFkd7XvSTtKUn4NPPHSvqGfIxTHo3yZRG8VfN42jagYABsFnOT2Za4U8/XcG+3ovf+ocwzeUC+jDCSPkaHebFlFtSWRrNWXQjYER+ZvK2ZDSqQexxf92FazrnpZrZSTvjFuL10UXzlvym4f3zDp7xwXW758qP/xk1Zhney9jOzfUpkrgMOxltPG0raA/ee2LEg/i34pHCTMmF9cE+Zfc2sd47Ms3iBvDU+oOhC4BormWk1ybWzxOm1eKdsf3xUc2N8wXb4NCsjc2TG4fd5J3IKgqLamqS78GVTn8iELYGb7rawklmM81oiZa0TSac0B+EeUeeU5bEk/cqp+dWx7Gvjtx9uhti+RKalJU7byaOkM3DT1L34PbjdzL6bzuXO9CzpBnzKjdGW+lvkgze/hH+jpUpUaSbpprAJZjasIH4/vJI5GB80e5uZVfWPnYpXJhfGHT764q7SO+Gz8367RPZWYHtLsxmkMurGpLBaQtJ2lrNOuHzQ8W/x8Vkv4UpqetoOsRb7Rj+gK+xsPW2j3BVy0ZJzB1EwHxTFM9Y2fLyFdwYqc1zlGbIIbjO/Im3foaTPIMl8FC/I38A7Cf9OiYcH/hHkDoiiYDATHZ4xS+Af+bV4Te3P+ItelFY7S5xm79+zeedyZNryJMM7OlfPCV8IV6Bl9/0BYGDmeClKvFZoY6JDvDM0b/srXpBXvfcN76RxuFdOXyrcOMlf4vT4kvhF4xImA28VyWT2++D29ctT/ormg2rbqy7F+WV6R3qlbS/gpzXkNsD7G1+sEXdy5v15meTlRQ2PJryfcanM8cA6/6vgWlULWi2R3v2NKBgf1lJ6nb1AT9woWGd7HqU1KbN/VtO5Oh2KbY24xr0zarnPNT6ctL8wXuMo7GQmf0DgUniHc9n60W0tcZo+mJXxcRNDUvjSRTIZ2ZYnfMzIroK3OhvPoKqzdD+8dXNs2h7FWy1F8Vue6DDds51Ja2dntq3wmmvVf/p/uGPA5/AKzPO4Hb9MptUlTttZPmCuGXrx8U93UqDU8HEfh2ULOdyl+nBKXG7pmJ7/NXyBqXfS9j41Z3bFKzD9a8TLug5f33SuamnZ/fFKz9lpe4ryCk+nKhRduc23hObrn/ICrnCrkO1PzsAXigd/nYGblJrDV6PaE6rtEdd4B9938XlnyuLtlj7053F3xXvwZv8MYJcCmcIZVSvSameJ031S/l5Ihd1NuI/9sxRMc4LPQbRU2h+Em3wm46aqwTXy+dWUxyfS8VBqjJDFB1IdjPcZ1F0/YSO85vp94OmKuNcBn+6KZ4LX4gfUiNfqEqftLB9wHjAiJ/wruOtvnkyzV90sanjV0bFeSmmLvUB2NHOvH1M4yj09r7xvfzkK1o8nMx1QijcybaXTo9BGhQL3rByHm6NOZ86WcuH69pX3qV3Bnrwxp+vie7g97+W0/1SJXDsumXum37mmeYCOacULZGuPkM0+5FToTcK9Q+7EJ+wrSmNiejlXxWtgjTUkVqFizeQ27/1mwPC0vxpeWO5F05rtTTK96XAN7IOv6lY4ZxKZFgiuKL6Dm+G+RMUo8iQzCS8os/e9ypwwCHfBXDevoKiQFW76PG8evvP98A7f7+BKbUTZPc/IrYK3DPun9+lkckx4ncxb4TdSItOYDypXQZXItTXdTpKZy1SWF1bjOovjy/N2Wf5oo0JBJxbnKs1LV74cPW0D/gjslDnekZLV6lJh0liIfhO8lvPZsptMh790Oy9p7RGyTXHGM+dCNmW29cJpTcry3G4hlHOdXSvON/vIz7EVyDyW2b+v+Rm2et9xRVV039fGWz9TgbfxltqTuEmhTk2+9sR5jbw0PYNhVLeO90rvxBm4m/m5+JihB6mY0LLpOrnjinLirUyqkeNmqT2AdUrit/yN0P58UI3pdl6kxVUxabHfquJaubNI0MlVO1vMQ9uLc5VtC/SIcLyl8MGC62Z2naRjS+L3sYxLpqRPA1dLGkyxS+bLyRNiVUlXNZ80s11L0mtlxHWv5ILaC2/BzEzX/7ekMpdb1LFWwJczYb0pHpm8Fz4W5AH8RbsLf9FOkrSvZdyEm+Q+2xwE/CF5a2Fml+eI/Sr9LoIXkA8kufXwAnqLHJnbJB2DL9F5m6TdzOzK9LzqjHK9XdKRwKLJlfWbuCktj7NwW/Nj8rEdB5nZppK+iptq9qhI6xLcPbLBeylsrmmpJX0J+JWkl4Fv47PWPgV8TNJhZnZhQRpH4a27N+TrfJ9vZjvI1w7/Y1P6jbROAH5pvgzAMNxj7T35bAb7mdnteQnJR6p/DXhL0i/xGuydwE8lnWlmzWtsQHvfyBRJTwOD5Ovbf5AFF8lf3gCfqXdb3PPvvoI4RfwKuEvSpfj3vhc+GLEdbsSVa1fmD/jAi2yTlMfxlrzL8qNqgKVxI2Z2q6TP4UslFI1Jq6YrNVtP23C3z6Pw2tAquH39hpL4c03khXdo3kyxZ8jCeIH6OHPbG7esyF92hOyEtF80QvZpOkxuT9IxV1A/yidh3DjvmumefKFA5kE6PJ+WadwzvCAv6yR9Fx8JfRZem/oz3iH5Z6pnQL0IWDdzvA5wdkHchfDpv6el7f2UzgXAyjXei164ie8SfLDjVykwJTL36m/ZqeZLO+pTnFYmzpuc7nfDlNgwJSxL+Zxfk+nw2luUepNmZpejvZVkisVnHCg0W9Le0q1tfSN0bj6o2k4SZMxmtNBvRSfW+24lf01ytWf9xdcsGZ4TvjLwp3bSN1vwzVNL4X7KE4H7cW+Wsk604bTvkvnBxzOf/+NitGArrnnNlguhdG5jXMF+IyP/VM008wrXOqamAdQ0q2RkFmfuqakXK4h7Oe6V9EncjfOszDvxjxpp1Z44jzk98Z5rOlemNE7EK0hHkqZwT+FLUTClP256bfQjjWs6V2bubHnp1sz5QV35nlaklTe9/EcL4jb6GVqaLpw21vvG+4zaXreDNmf97cptgRzc1y6NgUaSzrWSQXkFspvh5op+ZraypPWBr5nZN3Pi/pXyqQQKTVqSBuGdvu/iBfLrRXFr5Pk6yxkUKOlE3JPrdrwf6DozO14+zcrfzOzjJdfshdfSdsPdIy+yikFSSa6dgY674y7Ar6bjJYGtzOzKirTG4e62r6fjfvjAqjwzzpJ4Ybw2Xus9wcxeSwOn1jKzcc0yTfKr4f0LK+Cmlek0DTDMxL0Kr8kvkdKbiCutbfGV13YoSKMvPpBybbwVMzaF98Lnl5pr+VZJ38IHoJ6Azx+1ZEprG7xwzX3/JZ2NtxwWx8cKvYuv57E17ra8V45My+97eiaH4Wt8rIT3Jz2Be+GdXXStjPw43LzXMOntjY+12jQn7kR8gOdX8Nmtm/OXZ3JrDJw9yszmMilLespylm+VNBN3tR2EO3FcaGYTq/5PRv5mfCqc7Cp811rOyn3JjHU03hL/Mf5dfg73Qvu2JVN8qyyQSkPS5fgHcGUrhaqkh3BX0R/jNv05sHybfEP2Hty+fZVVzAklacu0+1m8CX5eOt4Hd8s8MkdmbbzpOwRvXk7ER6Pejr8AubZ8Fc+oK+BqM1u+QG4nWiiEcuRXxD/AYTWVxiJ4C6WxtvIdwGmWZpctkJlr/pyyUdoVcm3PxVOHVAjKfM3xojj9cS8rw9dzGYF7hE0Dji36yNut7KQ+oK/TtBwt3prKnWZCbSzd2ub7PgYf8HoT3rewOG7CPAofBDqXTJP8Pc0KQtI4MxueE3cNvJJzKN4HlMUsZ+6uJLcU8Kb5bMG1aLyfqQ9z77T1xpXbhWaWOyuxOmb93QD34Jtj1l/L9N1mZK7HZ0deHH9G56d0RuKVprlmW6j1HxZQpdHuNBhbAPviL+mY7Ckq1mhuvKTZQkvSA/Ekwe0AAAlUSURBVGa2fonMHWb2qaqwFD6OuTtkR6UO2R3MLLdDVj5t8u3pPzQz3MwWLcnfqsDz1rEg/aL4YKuni2TmJ0rTZTSFTbbqtb7vxGud96fjjYDfm9lmOXEvxzsOr8wrEEvSaMz91Chct8Y/1in4ZJO5a1y3Q2cqO/OTFt/3Ob4dSePNbONUcXnEzNYsSKPRwXsY7hRxIR3Ty/c1s1xHGPnyAUOBW6215QNaQjnTpiSHhX1w1+TVC+SOLruumf00RyZbFs0xxUunKknzwubV3RttToORZNbCazO/w2v2h+NmiKo0L8Xt3vfjzffvU7FqHl6AfDRzvCo+/31e3LY6ZPGZMIcWnMtdWjZzvvaSmel8L9xD6xrclHMfXjvcqkRmRGZ/AO42+iDeqV065QHe4X4yPh7ko3jL5uwaz2pj3NTxN7xFMxVvEeXFfTY921m4h9Hu2XtSksapSe4qvGZ9CT6q/CIKVrjDO2CXSfurp7zNxr3I1i1Jawt8DZiXySy9SokDAt7f8WN8bQfhJrirceUzsCSt/rjX2rnA55v/cxe+73fRMVBvFzIOLJRPMfIU7ijSvD1FwYh8OrF8QEk+risIb3t8RBt5aHlxrlrXnV9/YH5ueQ+aetNgHI6bfQ7HbepfwJcdnUTJALokm7eeRpV//Qi8WX8b7sHyNN5qyIvbVocsbjLLnaYE2K0ify0tSJ8KqZ+kQuw3+LK52+GtvaK5u7LK7wx8jYVV8PEhuWtw41O7gyv3E+iYOfTn1HRESPdtHbxg71MSr915uFqel4hMpzWueHdP+1tRsrZ9itNSZSf9jxNxZXNbkvuf9MzK1hW/LN3z3XCFeBleg5/jWXbB+74ePsHhq/ggtY+l8EH4ZHtV9+KIzL04ouJeTCYN2MTNvxPoGFxYNo9d0fiijfAWep5Mv8z+QNy896nGVpLWsHTPzsP7eMbii56NBzYokDmG/BHrq1NjWeTCvLQr2JM32p8G4x/kLP2J17CrJn4bzZwDgwqnIEjX2w/v4OyLuwJfg9uzc5cexWuBJ+EeG8eR5krCa+dzudVl5L6HTzeSu1X8p1aXzHyw6Xhc+u1LcY0yqzSaByMVTVj4CK5YHsArA0tTY5oY8ufueb2xX5W/TFidCkjL8xIx56DF8U3nyrynWq7s0MZEkQXP6Ef4OI0PFgbqove9rYXUcLNUq/fikabjfnjn/skV9+I9fEqeW3O2/1Tk8yu4sprdiF/xPt1Lx0zd0/E1NMAdF+6ueW8aUw+VWlsqr9MZ4Z68AWumF+cU3O220syEuyGukhO+CtXrVdeeggBvkfwFdwk8F29FfJHke10g0ygoH6SF+bToWO3sAtxP/ldp+wdwRsV/yi5IP42KBenx2n5jbMGGZJR384eZCZ+RXuTv4WYEZc4VjdJuLKX7FjVNEEnufrymthUd8/Y8T8l4AdqvgLQzL9HP0jvwUdxcdCju9LA/7rRQlFbLlR3anCgy3fdeTWGjcK+vZ7rwfX8Vn9Lnb7iDRC133TbvxS001dbxFuE5wHslaXXG9DsZH9DaUN5rAn8piZ+thEwrOtcU3tbUQ5X3uF3BnrzhtY1JeA2jtpkJbz5PTR/86Wm7PoXNNeFak2ztKQjo8HXvg5uzeqfjwunU6Sgo32TuJUErlwLFR6gukTlegqYacOZcc4vkKNw0Vto6wTt7p6UP9ylg0xQ+CDipQObopq0x3mU54JyK/3Rai+9FL9zsNbZRSFTdO7xmvB8dM+J+HvdsKqwl51wja4bYiTQXU0Hc/fE+jJfwVuUjwPGUTFlCG5Ud2pgoMsmd1LgXOd9OoYJq432fmJ7X9rgr+8z0LY6iZEbiNu9Fy8sHpHOdMf2OT7+T6DDvlbVq7k73Yk/cZXe3FL4lBYMxaXPqoaptQfWe+ge+otU7TeEL43bjoSWyvfAPPLvo+3gzK11VS9J+wA9xG7mRpiAws3Nz4j6E18QXxwvZVcxsVnI7nWhpicaCdE4zs2+U5aVA7lF8FGpjedS+eP/EXF4oGU+NNfBO4zH4vdgFr3l/pSSdtfBCaDm8+f4cbvqZUhD/EOAKM5ve6n9qF/m0ML/GC7BdrWRxI0nn44XdYrgNuR8d4xlkZqMq0voKPiXIYLyAGI6bE+ouIVrpRitpBK7IHsdNF+AtiNWBg63A+0c+lYzwCsTHU95m4AML7yhJb038+7jH5vQ02tHMrsuJ3/L73uxlpPoLqbV1L9qhM++upCvwCsKheGVrNl4J2akg/vq4wn4fr/h8A1egzwJftfyxIg/greleuCPBsMy59pc3blfb9OSNTpiZOplurSkI0kN/Eq8xHIKPov4T3mQ9eh7l7Ud4a+gneI1+EvDDCpnarZN0vh17ctYM8U3m76jhnSlZcCjFabmW3CRf2wxBG30uGdleeKHfWN50OJlR7yVyrdrWv0WLnkbtvO+0uZBaZ+5FG+9Pl7y7eGthV2p45RXI718Q/jRtTD1UmV5X38iesNEJM9N8zOMKwAppf8n0cm8yj9PcEK/1fhv4RI34j5Kazum4LzkL6mTOt2NPbssMMR+f00Mp/wNxc1FjHY9FKOjcb5KvbYagjT6XLvh/rdrW2/U0aul9Zz4upNaJe9cj3l0qVu7Lid+pqYcWyFluzex6+eLpLZuZ5hdm9lxm/xXcrDWv07wfL5jqci5wb2pKGz5GYXRJ/PfxwuGZpvDl07mCbNn7eKvmxiYzxC/x/pDu5ExcefbGW2uXSHoSr71eVEN+RpqK5EpgrKTZeO00j2G4Qv8R8AMzmyTpP1Yw42wX8aaZvSkJSX3N7NE0QrqI3pZMUmb2tKStgEslrUL+AFJS3JbedysYGd3DmG/vruac6XeOU/iElrUxH8H+VNt5SZonCHJJ05D8Tzq8w0rmyWnHnlxmW5W0qJn9pzP57wokrQBe8CUFsC1eu7u3xetsibtIX28lsxO00ufSWdqwrd+CO0NMyoT1wQcT7mtmvedVXnsa8/PdlfQCsAP+fOY4hc88vUJXpVWZl1AaQVfSqiOBpI99SGqV8x3p/7d3xzYIw0AYRu9YixHYgN0QHZOErZB+ClJGYKQQQHqvdeErLH2NZfehHrd3nr6ztOJ+L6M2B+2WhT8cunuf5PrhMX/Glme3u09VdU4yLaxdkhy3mKNKNAB4w+7bAwDwP0QDgGGiAcAw0QBgmGgAMOwOUNQ7yIKZq9oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2c49e88d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train['app_category'].value_counts().plot(kind='bar', title='App Category v/s Clicks')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2c5033c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_app_category = train.groupby(['app_category', 'click']).size().unstack()\n",
    "train_app_category.div(train_app_category.sum(axis=1), axis=0).plot(kind='bar', stacked=True, title=\"Intra-category CTR\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### C14 - C21 features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 2253 C14 in the data set\n",
      "There are 8 C15 in the data set\n",
      "There are 9 C16 in the data set\n",
      "There are 421 C17 in the data set\n",
      "There are 4 C18 in the data set\n",
      "There are 66 C19 in the data set\n",
      "There are 162 C20 in the data set\n"
     ]
    }
   ],
   "source": [
    "print(\"There are {} C14 in the data set\".format(train.C14.nunique()))\n",
    "print(\"There are {} C15 in the data set\".format(train.C15.nunique()))\n",
    "print(\"There are {} C16 in the data set\".format(train.C16.nunique()))\n",
    "print(\"There are {} C17 in the data set\".format(train.C17.nunique()))\n",
    "print(\"There are {} C18 in the data set\".format(train.C18.nunique()))\n",
    "print(\"There are {} C19 in the data set\".format(train.C19.nunique()))\n",
    "print(\"There are {} C20 in the data set\".format(train.C20.nunique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2c52989b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['C15', 'click']).size().unstack().plot(kind='bar', stacked=True, title='C15 distribution');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2c5545710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['C16', 'click']).size().unstack().plot(kind='bar', stacked=True, title='C16 distribution');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c2c635b390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.groupby(['C18', 'click']).size().unstack().plot(kind='bar', stacked=True, title='C18 distribution');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>...</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>hour_of_day</th>\n",
       "      <th>day_of_week</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>030440fe</td>\n",
       "      <td>08ba7db9</td>\n",
       "      <td>76b2941d</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>0eb72673</td>\n",
       "      <td>d2f72222</td>\n",
       "      <td>f028772b</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1800</td>\n",
       "      <td>3</td>\n",
       "      <td>167</td>\n",
       "      <td>100075</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>6c5b482c</td>\n",
       "      <td>7687a86e</td>\n",
       "      <td>3e814130</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>...</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>100083</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>Tuesday</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos   site_id site_domain  \\\n",
       "0   601394868      0 2014-10-21  1005           0  030440fe    08ba7db9   \n",
       "1   -59070594      0 2014-10-21  1005           1  0eb72673    d2f72222   \n",
       "2 -1859646727      0 2014-10-21  1005           0  6c5b482c    7687a86e   \n",
       "\n",
       "  site_category    app_id app_domain     ...         C14  C15  C16   C17  C18  \\\n",
       "0      76b2941d  ecad2386   7801e8d9     ...       18993  320   50  2161    0   \n",
       "1      f028772b  ecad2386   7801e8d9     ...       16208  320   50  1800    3   \n",
       "2      3e814130  ecad2386   7801e8d9     ...       17654  300  250  1994    2   \n",
       "\n",
       "   C19     C20  C21  hour_of_day  day_of_week  \n",
       "0   35      -1  157            0      Tuesday  \n",
       "1  167  100075   23            0      Tuesday  \n",
       "2   39  100083   33            0      Tuesday  \n",
       "\n",
       "[3 rows x 26 columns]"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "def convert_obj_to_int(self):\n",
    "    \n",
    "    object_list_columns = self.columns\n",
    "    object_list_dtypes = self.dtypes\n",
    "    new_col_suffix = '_int'\n",
    "    for index in range(0,len(object_list_columns)):\n",
    "        if object_list_dtypes[index] == object :\n",
    "            self[object_list_columns[index]+new_col_suffix] = self[object_list_columns[index]].map( lambda  x: hash(x))\n",
    "            self.drop([object_list_columns[index]],inplace=True,axis=1)\n",
    "    return self\n",
    "train = convert_obj_to_int(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>...</th>\n",
       "      <th>site_id_int</th>\n",
       "      <th>site_domain_int</th>\n",
       "      <th>site_category_int</th>\n",
       "      <th>app_id_int</th>\n",
       "      <th>app_domain_int</th>\n",
       "      <th>app_category_int</th>\n",
       "      <th>device_id_int</th>\n",
       "      <th>device_ip_int</th>\n",
       "      <th>device_model_int</th>\n",
       "      <th>day_of_week_int</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>601394868</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>...</td>\n",
       "      <td>8500684130855743782</td>\n",
       "      <td>3737552770353539727</td>\n",
       "      <td>-579286838256366625</td>\n",
       "      <td>-2575423656169186573</td>\n",
       "      <td>3543033699936297072</td>\n",
       "      <td>7752593096380383011</td>\n",
       "      <td>-5108016823012116901</td>\n",
       "      <td>3054947797612345216</td>\n",
       "      <td>5499258876395806341</td>\n",
       "      <td>-2674915302075856112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-59070594</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>16208</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>...</td>\n",
       "      <td>5459759015144306988</td>\n",
       "      <td>-1698103573712271499</td>\n",
       "      <td>-6747152105945483740</td>\n",
       "      <td>-2575423656169186573</td>\n",
       "      <td>3543033699936297072</td>\n",
       "      <td>7752593096380383011</td>\n",
       "      <td>-5108016823012116901</td>\n",
       "      <td>-1290735900571077289</td>\n",
       "      <td>-3454875886905983617</td>\n",
       "      <td>-2674915302075856112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1859646727</td>\n",
       "      <td>0</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>17654</td>\n",
       "      <td>300</td>\n",
       "      <td>250</td>\n",
       "      <td>...</td>\n",
       "      <td>3693588028815318457</td>\n",
       "      <td>3857419392707850031</td>\n",
       "      <td>-5544871227891909166</td>\n",
       "      <td>-2575423656169186573</td>\n",
       "      <td>3543033699936297072</td>\n",
       "      <td>7752593096380383011</td>\n",
       "      <td>-5108016823012116901</td>\n",
       "      <td>-8568811352907009621</td>\n",
       "      <td>-9097821374860032227</td>\n",
       "      <td>-2674915302075856112</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  click       hour    C1  banner_pos  device_type  \\\n",
       "0   601394868      0 2014-10-21  1005           0            1   \n",
       "1   -59070594      0 2014-10-21  1005           1            1   \n",
       "2 -1859646727      0 2014-10-21  1005           0            1   \n",
       "\n",
       "   device_conn_type    C14  C15  C16         ...           \\\n",
       "0                 0  18993  320   50         ...            \n",
       "1                 0  16208  320   50         ...            \n",
       "2                 0  17654  300  250         ...            \n",
       "\n",
       "           site_id_int      site_domain_int    site_category_int  \\\n",
       "0  8500684130855743782  3737552770353539727  -579286838256366625   \n",
       "1  5459759015144306988 -1698103573712271499 -6747152105945483740   \n",
       "2  3693588028815318457  3857419392707850031 -5544871227891909166   \n",
       "\n",
       "            app_id_int       app_domain_int     app_category_int  \\\n",
       "0 -2575423656169186573  3543033699936297072  7752593096380383011   \n",
       "1 -2575423656169186573  3543033699936297072  7752593096380383011   \n",
       "2 -2575423656169186573  3543033699936297072  7752593096380383011   \n",
       "\n",
       "         device_id_int        device_ip_int     device_model_int  \\\n",
       "0 -5108016823012116901  3054947797612345216  5499258876395806341   \n",
       "1 -5108016823012116901 -1290735900571077289 -3454875886905983617   \n",
       "2 -5108016823012116901 -8568811352907009621 -9097821374860032227   \n",
       "\n",
       "       day_of_week_int  \n",
       "0 -2674915302075856112  \n",
       "1 -2674915302075856112  \n",
       "2 -2674915302075856112  \n",
       "\n",
       "[3 rows x 26 columns]"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "train.drop('hour', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "train.drop('id', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "import lightgbm as lgb\n",
    "X_train = train.loc[:, train.columns != 'click']\n",
    "y_target = train.click.values\n",
    "#create lightgbm dataset\n",
    "msk = np.random.rand(len(X_train)) < 0.8\n",
    "lgb_train = lgb.Dataset(X_train[msk], y_target[msk])\n",
    "lgb_eval = lgb.Dataset(X_train[~msk], y_target[~msk], reference=lgb_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start training...\n",
      "[1]\tvalid_0's binary_logloss: 0.450675\n",
      "Training until validation scores don't improve for 500 rounds.\n",
      "[2]\tvalid_0's binary_logloss: 0.446337\n",
      "[3]\tvalid_0's binary_logloss: 0.442399\n",
      "[4]\tvalid_0's binary_logloss: 0.439119\n",
      "[5]\tvalid_0's binary_logloss: 0.436433\n",
      "[6]\tvalid_0's binary_logloss: 0.433844\n",
      "[7]\tvalid_0's binary_logloss: 0.431648\n",
      "[8]\tvalid_0's binary_logloss: 0.429778\n",
      "[9]\tvalid_0's binary_logloss: 0.428096\n",
      "[10]\tvalid_0's binary_logloss: 0.426571\n",
      "[11]\tvalid_0's binary_logloss: 0.425303\n",
      "[12]\tvalid_0's binary_logloss: 0.424066\n",
      "[13]\tvalid_0's binary_logloss: 0.422933\n",
      "[14]\tvalid_0's binary_logloss: 0.421888\n",
      "[15]\tvalid_0's binary_logloss: 0.421023\n",
      "[16]\tvalid_0's binary_logloss: 0.420212\n",
      "[17]\tvalid_0's binary_logloss: 0.419503\n",
      "[18]\tvalid_0's binary_logloss: 0.418866\n",
      "[19]\tvalid_0's binary_logloss: 0.418242\n",
      "[20]\tvalid_0's binary_logloss: 0.417684\n",
      "[21]\tvalid_0's binary_logloss: 0.417146\n",
      "[22]\tvalid_0's binary_logloss: 0.416616\n",
      "[23]\tvalid_0's binary_logloss: 0.416136\n",
      "[24]\tvalid_0's binary_logloss: 0.415746\n",
      "[25]\tvalid_0's binary_logloss: 0.41534\n",
      "[26]\tvalid_0's binary_logloss: 0.414983\n",
      "[27]\tvalid_0's binary_logloss: 0.414676\n",
      "[28]\tvalid_0's binary_logloss: 0.414381\n",
      "[29]\tvalid_0's binary_logloss: 0.414007\n",
      "[30]\tvalid_0's binary_logloss: 0.413762\n",
      "[31]\tvalid_0's binary_logloss: 0.4135\n",
      "[32]\tvalid_0's binary_logloss: 0.413117\n",
      "[33]\tvalid_0's binary_logloss: 0.412882\n",
      "[34]\tvalid_0's binary_logloss: 0.412639\n",
      "[35]\tvalid_0's binary_logloss: 0.412344\n",
      "[36]\tvalid_0's binary_logloss: 0.412116\n",
      "[37]\tvalid_0's binary_logloss: 0.411836\n",
      "[38]\tvalid_0's binary_logloss: 0.411575\n",
      "[39]\tvalid_0's binary_logloss: 0.411429\n",
      "[40]\tvalid_0's binary_logloss: 0.411201\n",
      "[41]\tvalid_0's binary_logloss: 0.411003\n",
      "[42]\tvalid_0's binary_logloss: 0.410884\n",
      "[43]\tvalid_0's binary_logloss: 0.410722\n",
      "[44]\tvalid_0's binary_logloss: 0.410587\n",
      "[45]\tvalid_0's binary_logloss: 0.41044\n",
      "[46]\tvalid_0's binary_logloss: 0.410222\n",
      "[47]\tvalid_0's binary_logloss: 0.410043\n",
      "[48]\tvalid_0's binary_logloss: 0.409975\n",
      "[49]\tvalid_0's binary_logloss: 0.409847\n",
      "[50]\tvalid_0's binary_logloss: 0.409714\n",
      "[51]\tvalid_0's binary_logloss: 0.4096\n",
      "[52]\tvalid_0's binary_logloss: 0.409498\n",
      "[53]\tvalid_0's binary_logloss: 0.409435\n",
      "[54]\tvalid_0's binary_logloss: 0.40931\n",
      "[55]\tvalid_0's binary_logloss: 0.409212\n",
      "[56]\tvalid_0's binary_logloss: 0.409091\n",
      "[57]\tvalid_0's binary_logloss: 0.408997\n",
      "[58]\tvalid_0's binary_logloss: 0.408876\n",
      "[59]\tvalid_0's binary_logloss: 0.408774\n",
      "[60]\tvalid_0's binary_logloss: 0.408627\n",
      "[61]\tvalid_0's binary_logloss: 0.408526\n",
      "[62]\tvalid_0's binary_logloss: 0.408473\n",
      "[63]\tvalid_0's binary_logloss: 0.408433\n",
      "[64]\tvalid_0's binary_logloss: 0.408393\n",
      "[65]\tvalid_0's binary_logloss: 0.408339\n",
      "[66]\tvalid_0's binary_logloss: 0.408268\n",
      "[67]\tvalid_0's binary_logloss: 0.408166\n",
      "[68]\tvalid_0's binary_logloss: 0.408086\n",
      "[69]\tvalid_0's binary_logloss: 0.408015\n",
      "[70]\tvalid_0's binary_logloss: 0.407957\n",
      "[71]\tvalid_0's binary_logloss: 0.407888\n",
      "[72]\tvalid_0's binary_logloss: 0.407848\n",
      "[73]\tvalid_0's binary_logloss: 0.407788\n",
      "[74]\tvalid_0's binary_logloss: 0.407738\n",
      "[75]\tvalid_0's binary_logloss: 0.407693\n",
      "[76]\tvalid_0's binary_logloss: 0.407594\n",
      "[77]\tvalid_0's binary_logloss: 0.407524\n",
      "[78]\tvalid_0's binary_logloss: 0.407483\n",
      "[79]\tvalid_0's binary_logloss: 0.407429\n",
      "[80]\tvalid_0's binary_logloss: 0.407378\n",
      "[81]\tvalid_0's binary_logloss: 0.407317\n",
      "[82]\tvalid_0's binary_logloss: 0.407204\n",
      "[83]\tvalid_0's binary_logloss: 0.40715\n",
      "[84]\tvalid_0's binary_logloss: 0.407127\n",
      "[85]\tvalid_0's binary_logloss: 0.407075\n",
      "[86]\tvalid_0's binary_logloss: 0.406974\n",
      "[87]\tvalid_0's binary_logloss: 0.40693\n",
      "[88]\tvalid_0's binary_logloss: 0.406859\n",
      "[89]\tvalid_0's binary_logloss: 0.406789\n",
      "[90]\tvalid_0's binary_logloss: 0.40672\n",
      "[91]\tvalid_0's binary_logloss: 0.406656\n",
      "[92]\tvalid_0's binary_logloss: 0.406607\n",
      "[93]\tvalid_0's binary_logloss: 0.406553\n",
      "[94]\tvalid_0's binary_logloss: 0.406517\n",
      "[95]\tvalid_0's binary_logloss: 0.40647\n",
      "[96]\tvalid_0's binary_logloss: 0.406406\n",
      "[97]\tvalid_0's binary_logloss: 0.406377\n",
      "[98]\tvalid_0's binary_logloss: 0.406318\n",
      "[99]\tvalid_0's binary_logloss: 0.406296\n",
      "[100]\tvalid_0's binary_logloss: 0.406237\n",
      "[101]\tvalid_0's binary_logloss: 0.40621\n",
      "[102]\tvalid_0's binary_logloss: 0.406155\n",
      "[103]\tvalid_0's binary_logloss: 0.406139\n",
      "[104]\tvalid_0's binary_logloss: 0.406094\n",
      "[105]\tvalid_0's binary_logloss: 0.40607\n",
      "[106]\tvalid_0's binary_logloss: 0.406029\n",
      "[107]\tvalid_0's binary_logloss: 0.405948\n",
      "[108]\tvalid_0's binary_logloss: 0.405921\n",
      "[109]\tvalid_0's binary_logloss: 0.405863\n",
      "[110]\tvalid_0's binary_logloss: 0.405823\n",
      "[111]\tvalid_0's binary_logloss: 0.405781\n",
      "[112]\tvalid_0's binary_logloss: 0.405746\n",
      "[113]\tvalid_0's binary_logloss: 0.405717\n",
      "[114]\tvalid_0's binary_logloss: 0.405684\n",
      "[115]\tvalid_0's binary_logloss: 0.405612\n",
      "[116]\tvalid_0's binary_logloss: 0.405535\n",
      "[117]\tvalid_0's binary_logloss: 0.40546\n",
      "[118]\tvalid_0's binary_logloss: 0.405442\n",
      "[119]\tvalid_0's binary_logloss: 0.405408\n",
      "[120]\tvalid_0's binary_logloss: 0.405339\n",
      "[121]\tvalid_0's binary_logloss: 0.40532\n",
      "[122]\tvalid_0's binary_logloss: 0.4053\n",
      "[123]\tvalid_0's binary_logloss: 0.405262\n",
      "[124]\tvalid_0's binary_logloss: 0.405223\n",
      "[125]\tvalid_0's binary_logloss: 0.4052\n",
      "[126]\tvalid_0's binary_logloss: 0.405165\n",
      "[127]\tvalid_0's binary_logloss: 0.405137\n",
      "[128]\tvalid_0's binary_logloss: 0.405105\n",
      "[129]\tvalid_0's binary_logloss: 0.405075\n",
      "[130]\tvalid_0's binary_logloss: 0.405055\n",
      "[131]\tvalid_0's binary_logloss: 0.405028\n",
      "[132]\tvalid_0's binary_logloss: 0.405017\n",
      "[133]\tvalid_0's binary_logloss: 0.404996\n",
      "[134]\tvalid_0's binary_logloss: 0.404969\n",
      "[135]\tvalid_0's binary_logloss: 0.404947\n",
      "[136]\tvalid_0's binary_logloss: 0.404885\n",
      "[137]\tvalid_0's binary_logloss: 0.404859\n",
      "[138]\tvalid_0's binary_logloss: 0.404795\n",
      "[139]\tvalid_0's binary_logloss: 0.40474\n",
      "[140]\tvalid_0's binary_logloss: 0.404716\n",
      "[141]\tvalid_0's binary_logloss: 0.404673\n",
      "[142]\tvalid_0's binary_logloss: 0.404649\n",
      "[143]\tvalid_0's binary_logloss: 0.404635\n",
      "[144]\tvalid_0's binary_logloss: 0.40461\n",
      "[145]\tvalid_0's binary_logloss: 0.404595\n",
      "[146]\tvalid_0's binary_logloss: 0.404596\n",
      "[147]\tvalid_0's binary_logloss: 0.404579\n",
      "[148]\tvalid_0's binary_logloss: 0.404561\n",
      "[149]\tvalid_0's binary_logloss: 0.404523\n",
      "[150]\tvalid_0's binary_logloss: 0.404512\n",
      "[151]\tvalid_0's binary_logloss: 0.404475\n",
      "[152]\tvalid_0's binary_logloss: 0.40445\n",
      "[153]\tvalid_0's binary_logloss: 0.404422\n",
      "[154]\tvalid_0's binary_logloss: 0.404405\n",
      "[155]\tvalid_0's binary_logloss: 0.404382\n",
      "[156]\tvalid_0's binary_logloss: 0.404362\n",
      "[157]\tvalid_0's binary_logloss: 0.40432\n",
      "[158]\tvalid_0's binary_logloss: 0.404293\n",
      "[159]\tvalid_0's binary_logloss: 0.404284\n",
      "[160]\tvalid_0's binary_logloss: 0.404264\n",
      "[161]\tvalid_0's binary_logloss: 0.404262\n",
      "[162]\tvalid_0's binary_logloss: 0.40425\n",
      "[163]\tvalid_0's binary_logloss: 0.404238\n",
      "[164]\tvalid_0's binary_logloss: 0.404231\n",
      "[165]\tvalid_0's binary_logloss: 0.404205\n",
      "[166]\tvalid_0's binary_logloss: 0.404158\n",
      "[167]\tvalid_0's binary_logloss: 0.404137\n",
      "[168]\tvalid_0's binary_logloss: 0.404121\n",
      "[169]\tvalid_0's binary_logloss: 0.404103\n",
      "[170]\tvalid_0's binary_logloss: 0.404056\n",
      "[171]\tvalid_0's binary_logloss: 0.403989\n",
      "[172]\tvalid_0's binary_logloss: 0.403983\n",
      "[173]\tvalid_0's binary_logloss: 0.403958\n",
      "[174]\tvalid_0's binary_logloss: 0.403928\n",
      "[175]\tvalid_0's binary_logloss: 0.403857\n",
      "[176]\tvalid_0's binary_logloss: 0.403778\n",
      "[177]\tvalid_0's binary_logloss: 0.403714\n",
      "[178]\tvalid_0's binary_logloss: 0.403658\n",
      "[179]\tvalid_0's binary_logloss: 0.403597\n",
      "[180]\tvalid_0's binary_logloss: 0.403559\n",
      "[181]\tvalid_0's binary_logloss: 0.403544\n",
      "[182]\tvalid_0's binary_logloss: 0.40354\n",
      "[183]\tvalid_0's binary_logloss: 0.403526\n",
      "[184]\tvalid_0's binary_logloss: 0.403515\n",
      "[185]\tvalid_0's binary_logloss: 0.403509\n",
      "[186]\tvalid_0's binary_logloss: 0.403499\n",
      "[187]\tvalid_0's binary_logloss: 0.40349\n",
      "[188]\tvalid_0's binary_logloss: 0.403466\n",
      "[189]\tvalid_0's binary_logloss: 0.403433\n",
      "[190]\tvalid_0's binary_logloss: 0.403415\n",
      "[191]\tvalid_0's binary_logloss: 0.403396\n",
      "[192]\tvalid_0's binary_logloss: 0.403382\n",
      "[193]\tvalid_0's binary_logloss: 0.403366\n",
      "[194]\tvalid_0's binary_logloss: 0.403357\n",
      "[195]\tvalid_0's binary_logloss: 0.403345\n",
      "[196]\tvalid_0's binary_logloss: 0.403325\n",
      "[197]\tvalid_0's binary_logloss: 0.403323\n",
      "[198]\tvalid_0's binary_logloss: 0.40331\n",
      "[199]\tvalid_0's binary_logloss: 0.403292\n",
      "[200]\tvalid_0's binary_logloss: 0.403273\n",
      "[201]\tvalid_0's binary_logloss: 0.403269\n",
      "[202]\tvalid_0's binary_logloss: 0.40325\n",
      "[203]\tvalid_0's binary_logloss: 0.403249\n",
      "[204]\tvalid_0's binary_logloss: 0.403245\n",
      "[205]\tvalid_0's binary_logloss: 0.403229\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[206]\tvalid_0's binary_logloss: 0.403217\n",
      "[207]\tvalid_0's binary_logloss: 0.403176\n",
      "[208]\tvalid_0's binary_logloss: 0.403173\n",
      "[209]\tvalid_0's binary_logloss: 0.403157\n",
      "[210]\tvalid_0's binary_logloss: 0.403157\n",
      "[211]\tvalid_0's binary_logloss: 0.403123\n",
      "[212]\tvalid_0's binary_logloss: 0.403121\n",
      "[213]\tvalid_0's binary_logloss: 0.403104\n",
      "[214]\tvalid_0's binary_logloss: 0.403082\n",
      "[215]\tvalid_0's binary_logloss: 0.403076\n",
      "[216]\tvalid_0's binary_logloss: 0.403084\n",
      "[217]\tvalid_0's binary_logloss: 0.403083\n",
      "[218]\tvalid_0's binary_logloss: 0.403067\n",
      "[219]\tvalid_0's binary_logloss: 0.403046\n",
      "[220]\tvalid_0's binary_logloss: 0.403049\n",
      "[221]\tvalid_0's binary_logloss: 0.403041\n",
      "[222]\tvalid_0's binary_logloss: 0.403014\n",
      "[223]\tvalid_0's binary_logloss: 0.403002\n",
      "[224]\tvalid_0's binary_logloss: 0.402986\n",
      "[225]\tvalid_0's binary_logloss: 0.402995\n",
      "[226]\tvalid_0's binary_logloss: 0.402968\n",
      "[227]\tvalid_0's binary_logloss: 0.402962\n",
      "[228]\tvalid_0's binary_logloss: 0.402955\n",
      "[229]\tvalid_0's binary_logloss: 0.402924\n",
      "[230]\tvalid_0's binary_logloss: 0.402913\n",
      "[231]\tvalid_0's binary_logloss: 0.402914\n",
      "[232]\tvalid_0's binary_logloss: 0.4029\n",
      "[233]\tvalid_0's binary_logloss: 0.402912\n",
      "[234]\tvalid_0's binary_logloss: 0.402909\n",
      "[235]\tvalid_0's binary_logloss: 0.402903\n",
      "[236]\tvalid_0's binary_logloss: 0.402888\n",
      "[237]\tvalid_0's binary_logloss: 0.40288\n",
      "[238]\tvalid_0's binary_logloss: 0.402868\n",
      "[239]\tvalid_0's binary_logloss: 0.402868\n",
      "[240]\tvalid_0's binary_logloss: 0.402865\n",
      "[241]\tvalid_0's binary_logloss: 0.402853\n",
      "[242]\tvalid_0's binary_logloss: 0.402836\n",
      "[243]\tvalid_0's binary_logloss: 0.402827\n",
      "[244]\tvalid_0's binary_logloss: 0.402824\n",
      "[245]\tvalid_0's binary_logloss: 0.402817\n",
      "[246]\tvalid_0's binary_logloss: 0.402799\n",
      "[247]\tvalid_0's binary_logloss: 0.402785\n",
      "[248]\tvalid_0's binary_logloss: 0.402786\n",
      "[249]\tvalid_0's binary_logloss: 0.402792\n",
      "[250]\tvalid_0's binary_logloss: 0.402771\n",
      "[251]\tvalid_0's binary_logloss: 0.40277\n",
      "[252]\tvalid_0's binary_logloss: 0.402766\n",
      "[253]\tvalid_0's binary_logloss: 0.402755\n",
      "[254]\tvalid_0's binary_logloss: 0.402746\n",
      "[255]\tvalid_0's binary_logloss: 0.40274\n",
      "[256]\tvalid_0's binary_logloss: 0.402719\n",
      "[257]\tvalid_0's binary_logloss: 0.402704\n",
      "[258]\tvalid_0's binary_logloss: 0.40269\n",
      "[259]\tvalid_0's binary_logloss: 0.402689\n",
      "[260]\tvalid_0's binary_logloss: 0.40268\n",
      "[261]\tvalid_0's binary_logloss: 0.402644\n",
      "[262]\tvalid_0's binary_logloss: 0.402629\n",
      "[263]\tvalid_0's binary_logloss: 0.40264\n",
      "[264]\tvalid_0's binary_logloss: 0.402624\n",
      "[265]\tvalid_0's binary_logloss: 0.40262\n",
      "[266]\tvalid_0's binary_logloss: 0.402605\n",
      "[267]\tvalid_0's binary_logloss: 0.402604\n",
      "[268]\tvalid_0's binary_logloss: 0.402593\n",
      "[269]\tvalid_0's binary_logloss: 0.402591\n",
      "[270]\tvalid_0's binary_logloss: 0.402588\n",
      "[271]\tvalid_0's binary_logloss: 0.402561\n",
      "[272]\tvalid_0's binary_logloss: 0.402523\n",
      "[273]\tvalid_0's binary_logloss: 0.402516\n",
      "[274]\tvalid_0's binary_logloss: 0.402509\n",
      "[275]\tvalid_0's binary_logloss: 0.402493\n",
      "[276]\tvalid_0's binary_logloss: 0.402481\n",
      "[277]\tvalid_0's binary_logloss: 0.402482\n",
      "[278]\tvalid_0's binary_logloss: 0.402452\n",
      "[279]\tvalid_0's binary_logloss: 0.402452\n",
      "[280]\tvalid_0's binary_logloss: 0.40242\n",
      "[281]\tvalid_0's binary_logloss: 0.402415\n",
      "[282]\tvalid_0's binary_logloss: 0.402414\n",
      "[283]\tvalid_0's binary_logloss: 0.402409\n",
      "[284]\tvalid_0's binary_logloss: 0.402391\n",
      "[285]\tvalid_0's binary_logloss: 0.402388\n",
      "[286]\tvalid_0's binary_logloss: 0.40236\n",
      "[287]\tvalid_0's binary_logloss: 0.402342\n",
      "[288]\tvalid_0's binary_logloss: 0.40233\n",
      "[289]\tvalid_0's binary_logloss: 0.402335\n",
      "[290]\tvalid_0's binary_logloss: 0.402336\n",
      "[291]\tvalid_0's binary_logloss: 0.402323\n",
      "[292]\tvalid_0's binary_logloss: 0.402317\n",
      "[293]\tvalid_0's binary_logloss: 0.402314\n",
      "[294]\tvalid_0's binary_logloss: 0.402319\n",
      "[295]\tvalid_0's binary_logloss: 0.40229\n",
      "[296]\tvalid_0's binary_logloss: 0.402277\n",
      "[297]\tvalid_0's binary_logloss: 0.402282\n",
      "[298]\tvalid_0's binary_logloss: 0.402284\n",
      "[299]\tvalid_0's binary_logloss: 0.402275\n",
      "[300]\tvalid_0's binary_logloss: 0.40228\n",
      "[301]\tvalid_0's binary_logloss: 0.402282\n",
      "[302]\tvalid_0's binary_logloss: 0.402274\n",
      "[303]\tvalid_0's binary_logloss: 0.402264\n",
      "[304]\tvalid_0's binary_logloss: 0.40226\n",
      "[305]\tvalid_0's binary_logloss: 0.402259\n",
      "[306]\tvalid_0's binary_logloss: 0.402254\n",
      "[307]\tvalid_0's binary_logloss: 0.402249\n",
      "[308]\tvalid_0's binary_logloss: 0.402191\n",
      "[309]\tvalid_0's binary_logloss: 0.402184\n",
      "[310]\tvalid_0's binary_logloss: 0.402167\n",
      "[311]\tvalid_0's binary_logloss: 0.402168\n",
      "[312]\tvalid_0's binary_logloss: 0.402172\n",
      "[313]\tvalid_0's binary_logloss: 0.40216\n",
      "[314]\tvalid_0's binary_logloss: 0.402155\n",
      "[315]\tvalid_0's binary_logloss: 0.40216\n",
      "[316]\tvalid_0's binary_logloss: 0.402146\n",
      "[317]\tvalid_0's binary_logloss: 0.402131\n",
      "[318]\tvalid_0's binary_logloss: 0.40213\n",
      "[319]\tvalid_0's binary_logloss: 0.402113\n",
      "[320]\tvalid_0's binary_logloss: 0.402099\n",
      "[321]\tvalid_0's binary_logloss: 0.402095\n",
      "[322]\tvalid_0's binary_logloss: 0.402106\n",
      "[323]\tvalid_0's binary_logloss: 0.402075\n",
      "[324]\tvalid_0's binary_logloss: 0.402073\n",
      "[325]\tvalid_0's binary_logloss: 0.402074\n",
      "[326]\tvalid_0's binary_logloss: 0.402064\n",
      "[327]\tvalid_0's binary_logloss: 0.402057\n",
      "[328]\tvalid_0's binary_logloss: 0.402025\n",
      "[329]\tvalid_0's binary_logloss: 0.402023\n",
      "[330]\tvalid_0's binary_logloss: 0.402024\n",
      "[331]\tvalid_0's binary_logloss: 0.402033\n",
      "[332]\tvalid_0's binary_logloss: 0.402022\n",
      "[333]\tvalid_0's binary_logloss: 0.402024\n",
      "[334]\tvalid_0's binary_logloss: 0.402024\n",
      "[335]\tvalid_0's binary_logloss: 0.402025\n",
      "[336]\tvalid_0's binary_logloss: 0.402027\n",
      "[337]\tvalid_0's binary_logloss: 0.402018\n",
      "[338]\tvalid_0's binary_logloss: 0.402025\n",
      "[339]\tvalid_0's binary_logloss: 0.402021\n",
      "[340]\tvalid_0's binary_logloss: 0.40203\n",
      "[341]\tvalid_0's binary_logloss: 0.402004\n",
      "[342]\tvalid_0's binary_logloss: 0.402\n",
      "[343]\tvalid_0's binary_logloss: 0.402006\n",
      "[344]\tvalid_0's binary_logloss: 0.401999\n",
      "[345]\tvalid_0's binary_logloss: 0.401963\n",
      "[346]\tvalid_0's binary_logloss: 0.401949\n",
      "[347]\tvalid_0's binary_logloss: 0.401942\n",
      "[348]\tvalid_0's binary_logloss: 0.40193\n",
      "[349]\tvalid_0's binary_logloss: 0.40192\n",
      "[350]\tvalid_0's binary_logloss: 0.401916\n",
      "[351]\tvalid_0's binary_logloss: 0.401894\n",
      "[352]\tvalid_0's binary_logloss: 0.40188\n",
      "[353]\tvalid_0's binary_logloss: 0.401885\n",
      "[354]\tvalid_0's binary_logloss: 0.401883\n",
      "[355]\tvalid_0's binary_logloss: 0.401887\n",
      "[356]\tvalid_0's binary_logloss: 0.401889\n",
      "[357]\tvalid_0's binary_logloss: 0.401878\n",
      "[358]\tvalid_0's binary_logloss: 0.401869\n",
      "[359]\tvalid_0's binary_logloss: 0.401823\n",
      "[360]\tvalid_0's binary_logloss: 0.401826\n",
      "[361]\tvalid_0's binary_logloss: 0.401817\n",
      "[362]\tvalid_0's binary_logloss: 0.401787\n",
      "[363]\tvalid_0's binary_logloss: 0.401787\n",
      "[364]\tvalid_0's binary_logloss: 0.401785\n",
      "[365]\tvalid_0's binary_logloss: 0.40179\n",
      "[366]\tvalid_0's binary_logloss: 0.401774\n",
      "[367]\tvalid_0's binary_logloss: 0.401765\n",
      "[368]\tvalid_0's binary_logloss: 0.401757\n",
      "[369]\tvalid_0's binary_logloss: 0.401765\n",
      "[370]\tvalid_0's binary_logloss: 0.401761\n",
      "[371]\tvalid_0's binary_logloss: 0.401749\n",
      "[372]\tvalid_0's binary_logloss: 0.401721\n",
      "[373]\tvalid_0's binary_logloss: 0.40172\n",
      "[374]\tvalid_0's binary_logloss: 0.401704\n",
      "[375]\tvalid_0's binary_logloss: 0.401708\n",
      "[376]\tvalid_0's binary_logloss: 0.401692\n",
      "[377]\tvalid_0's binary_logloss: 0.401691\n",
      "[378]\tvalid_0's binary_logloss: 0.401682\n",
      "[379]\tvalid_0's binary_logloss: 0.40169\n",
      "[380]\tvalid_0's binary_logloss: 0.401673\n",
      "[381]\tvalid_0's binary_logloss: 0.401654\n",
      "[382]\tvalid_0's binary_logloss: 0.401649\n",
      "[383]\tvalid_0's binary_logloss: 0.401637\n",
      "[384]\tvalid_0's binary_logloss: 0.401623\n",
      "[385]\tvalid_0's binary_logloss: 0.401613\n",
      "[386]\tvalid_0's binary_logloss: 0.401608\n",
      "[387]\tvalid_0's binary_logloss: 0.401612\n",
      "[388]\tvalid_0's binary_logloss: 0.401607\n",
      "[389]\tvalid_0's binary_logloss: 0.401605\n",
      "[390]\tvalid_0's binary_logloss: 0.401603\n",
      "[391]\tvalid_0's binary_logloss: 0.40159\n",
      "[392]\tvalid_0's binary_logloss: 0.401578\n",
      "[393]\tvalid_0's binary_logloss: 0.401567\n",
      "[394]\tvalid_0's binary_logloss: 0.40155\n",
      "[395]\tvalid_0's binary_logloss: 0.401545\n",
      "[396]\tvalid_0's binary_logloss: 0.401536\n",
      "[397]\tvalid_0's binary_logloss: 0.4015\n",
      "[398]\tvalid_0's binary_logloss: 0.401485\n",
      "[399]\tvalid_0's binary_logloss: 0.401477\n",
      "[400]\tvalid_0's binary_logloss: 0.401479\n",
      "[401]\tvalid_0's binary_logloss: 0.401467\n",
      "[402]\tvalid_0's binary_logloss: 0.401462\n",
      "[403]\tvalid_0's binary_logloss: 0.401457\n",
      "[404]\tvalid_0's binary_logloss: 0.401449\n",
      "[405]\tvalid_0's binary_logloss: 0.40144\n",
      "[406]\tvalid_0's binary_logloss: 0.401436\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[407]\tvalid_0's binary_logloss: 0.401431\n",
      "[408]\tvalid_0's binary_logloss: 0.401436\n",
      "[409]\tvalid_0's binary_logloss: 0.401432\n",
      "[410]\tvalid_0's binary_logloss: 0.401427\n",
      "[411]\tvalid_0's binary_logloss: 0.401407\n",
      "[412]\tvalid_0's binary_logloss: 0.401406\n",
      "[413]\tvalid_0's binary_logloss: 0.401393\n",
      "[414]\tvalid_0's binary_logloss: 0.401392\n",
      "[415]\tvalid_0's binary_logloss: 0.401398\n",
      "[416]\tvalid_0's binary_logloss: 0.401387\n",
      "[417]\tvalid_0's binary_logloss: 0.401372\n",
      "[418]\tvalid_0's binary_logloss: 0.401364\n",
      "[419]\tvalid_0's binary_logloss: 0.40133\n",
      "[420]\tvalid_0's binary_logloss: 0.401328\n",
      "[421]\tvalid_0's binary_logloss: 0.401323\n",
      "[422]\tvalid_0's binary_logloss: 0.401312\n",
      "[423]\tvalid_0's binary_logloss: 0.40131\n",
      "[424]\tvalid_0's binary_logloss: 0.401305\n",
      "[425]\tvalid_0's binary_logloss: 0.401297\n",
      "[426]\tvalid_0's binary_logloss: 0.401294\n",
      "[427]\tvalid_0's binary_logloss: 0.401293\n",
      "[428]\tvalid_0's binary_logloss: 0.401283\n",
      "[429]\tvalid_0's binary_logloss: 0.401274\n",
      "[430]\tvalid_0's binary_logloss: 0.401273\n",
      "[431]\tvalid_0's binary_logloss: 0.401247\n",
      "[432]\tvalid_0's binary_logloss: 0.401229\n",
      "[433]\tvalid_0's binary_logloss: 0.401232\n",
      "[434]\tvalid_0's binary_logloss: 0.401235\n",
      "[435]\tvalid_0's binary_logloss: 0.401227\n",
      "[436]\tvalid_0's binary_logloss: 0.401221\n",
      "[437]\tvalid_0's binary_logloss: 0.401218\n",
      "[438]\tvalid_0's binary_logloss: 0.401215\n",
      "[439]\tvalid_0's binary_logloss: 0.401218\n",
      "[440]\tvalid_0's binary_logloss: 0.401206\n",
      "[441]\tvalid_0's binary_logloss: 0.401189\n",
      "[442]\tvalid_0's binary_logloss: 0.401176\n",
      "[443]\tvalid_0's binary_logloss: 0.401155\n",
      "[444]\tvalid_0's binary_logloss: 0.401148\n",
      "[445]\tvalid_0's binary_logloss: 0.401143\n",
      "[446]\tvalid_0's binary_logloss: 0.401133\n",
      "[447]\tvalid_0's binary_logloss: 0.401122\n",
      "[448]\tvalid_0's binary_logloss: 0.401121\n",
      "[449]\tvalid_0's binary_logloss: 0.401126\n",
      "[450]\tvalid_0's binary_logloss: 0.401129\n",
      "[451]\tvalid_0's binary_logloss: 0.401129\n",
      "[452]\tvalid_0's binary_logloss: 0.401114\n",
      "[453]\tvalid_0's binary_logloss: 0.401117\n",
      "[454]\tvalid_0's binary_logloss: 0.401126\n",
      "[455]\tvalid_0's binary_logloss: 0.401121\n",
      "[456]\tvalid_0's binary_logloss: 0.401117\n",
      "[457]\tvalid_0's binary_logloss: 0.401104\n",
      "[458]\tvalid_0's binary_logloss: 0.401104\n",
      "[459]\tvalid_0's binary_logloss: 0.401102\n",
      "[460]\tvalid_0's binary_logloss: 0.401098\n",
      "[461]\tvalid_0's binary_logloss: 0.401095\n",
      "[462]\tvalid_0's binary_logloss: 0.401092\n",
      "[463]\tvalid_0's binary_logloss: 0.401089\n",
      "[464]\tvalid_0's binary_logloss: 0.401086\n",
      "[465]\tvalid_0's binary_logloss: 0.401082\n",
      "[466]\tvalid_0's binary_logloss: 0.401075\n",
      "[467]\tvalid_0's binary_logloss: 0.401072\n",
      "[468]\tvalid_0's binary_logloss: 0.401062\n",
      "[469]\tvalid_0's binary_logloss: 0.401058\n",
      "[470]\tvalid_0's binary_logloss: 0.401054\n",
      "[471]\tvalid_0's binary_logloss: 0.401056\n",
      "[472]\tvalid_0's binary_logloss: 0.401059\n",
      "[473]\tvalid_0's binary_logloss: 0.401067\n",
      "[474]\tvalid_0's binary_logloss: 0.401072\n",
      "[475]\tvalid_0's binary_logloss: 0.401073\n",
      "[476]\tvalid_0's binary_logloss: 0.401069\n",
      "[477]\tvalid_0's binary_logloss: 0.401069\n",
      "[478]\tvalid_0's binary_logloss: 0.401065\n",
      "[479]\tvalid_0's binary_logloss: 0.401055\n",
      "[480]\tvalid_0's binary_logloss: 0.401028\n",
      "[481]\tvalid_0's binary_logloss: 0.401031\n",
      "[482]\tvalid_0's binary_logloss: 0.40102\n",
      "[483]\tvalid_0's binary_logloss: 0.401004\n",
      "[484]\tvalid_0's binary_logloss: 0.400989\n",
      "[485]\tvalid_0's binary_logloss: 0.400993\n",
      "[486]\tvalid_0's binary_logloss: 0.400986\n",
      "[487]\tvalid_0's binary_logloss: 0.400987\n",
      "[488]\tvalid_0's binary_logloss: 0.40098\n",
      "[489]\tvalid_0's binary_logloss: 0.400974\n",
      "[490]\tvalid_0's binary_logloss: 0.400963\n",
      "[491]\tvalid_0's binary_logloss: 0.40096\n",
      "[492]\tvalid_0's binary_logloss: 0.400955\n",
      "[493]\tvalid_0's binary_logloss: 0.400951\n",
      "[494]\tvalid_0's binary_logloss: 0.400949\n",
      "[495]\tvalid_0's binary_logloss: 0.40095\n",
      "[496]\tvalid_0's binary_logloss: 0.400968\n",
      "[497]\tvalid_0's binary_logloss: 0.400973\n",
      "[498]\tvalid_0's binary_logloss: 0.400983\n",
      "[499]\tvalid_0's binary_logloss: 0.400968\n",
      "[500]\tvalid_0's binary_logloss: 0.400976\n",
      "[501]\tvalid_0's binary_logloss: 0.40097\n",
      "[502]\tvalid_0's binary_logloss: 0.40097\n",
      "[503]\tvalid_0's binary_logloss: 0.400963\n",
      "[504]\tvalid_0's binary_logloss: 0.400961\n",
      "[505]\tvalid_0's binary_logloss: 0.400959\n",
      "[506]\tvalid_0's binary_logloss: 0.400966\n",
      "[507]\tvalid_0's binary_logloss: 0.40096\n",
      "[508]\tvalid_0's binary_logloss: 0.400963\n",
      "[509]\tvalid_0's binary_logloss: 0.400967\n",
      "[510]\tvalid_0's binary_logloss: 0.400973\n",
      "[511]\tvalid_0's binary_logloss: 0.400971\n",
      "[512]\tvalid_0's binary_logloss: 0.40097\n",
      "[513]\tvalid_0's binary_logloss: 0.400965\n",
      "[514]\tvalid_0's binary_logloss: 0.400968\n",
      "[515]\tvalid_0's binary_logloss: 0.400941\n",
      "[516]\tvalid_0's binary_logloss: 0.400931\n",
      "[517]\tvalid_0's binary_logloss: 0.400929\n",
      "[518]\tvalid_0's binary_logloss: 0.400918\n",
      "[519]\tvalid_0's binary_logloss: 0.4009\n",
      "[520]\tvalid_0's binary_logloss: 0.400894\n",
      "[521]\tvalid_0's binary_logloss: 0.40089\n",
      "[522]\tvalid_0's binary_logloss: 0.400892\n",
      "[523]\tvalid_0's binary_logloss: 0.400876\n",
      "[524]\tvalid_0's binary_logloss: 0.400885\n",
      "[525]\tvalid_0's binary_logloss: 0.400892\n",
      "[526]\tvalid_0's binary_logloss: 0.400884\n",
      "[527]\tvalid_0's binary_logloss: 0.400894\n",
      "[528]\tvalid_0's binary_logloss: 0.400896\n",
      "[529]\tvalid_0's binary_logloss: 0.400889\n",
      "[530]\tvalid_0's binary_logloss: 0.400885\n",
      "[531]\tvalid_0's binary_logloss: 0.400888\n",
      "[532]\tvalid_0's binary_logloss: 0.400884\n",
      "[533]\tvalid_0's binary_logloss: 0.400877\n",
      "[534]\tvalid_0's binary_logloss: 0.40088\n",
      "[535]\tvalid_0's binary_logloss: 0.40088\n",
      "[536]\tvalid_0's binary_logloss: 0.400888\n",
      "[537]\tvalid_0's binary_logloss: 0.400884\n",
      "[538]\tvalid_0's binary_logloss: 0.40088\n",
      "[539]\tvalid_0's binary_logloss: 0.400883\n",
      "[540]\tvalid_0's binary_logloss: 0.400862\n",
      "[541]\tvalid_0's binary_logloss: 0.400861\n",
      "[542]\tvalid_0's binary_logloss: 0.400856\n",
      "[543]\tvalid_0's binary_logloss: 0.400865\n",
      "[544]\tvalid_0's binary_logloss: 0.400872\n",
      "[545]\tvalid_0's binary_logloss: 0.400868\n",
      "[546]\tvalid_0's binary_logloss: 0.400855\n",
      "[547]\tvalid_0's binary_logloss: 0.400846\n",
      "[548]\tvalid_0's binary_logloss: 0.400848\n",
      "[549]\tvalid_0's binary_logloss: 0.400849\n",
      "[550]\tvalid_0's binary_logloss: 0.400853\n",
      "[551]\tvalid_0's binary_logloss: 0.400842\n",
      "[552]\tvalid_0's binary_logloss: 0.400842\n",
      "[553]\tvalid_0's binary_logloss: 0.400839\n",
      "[554]\tvalid_0's binary_logloss: 0.400836\n",
      "[555]\tvalid_0's binary_logloss: 0.400818\n",
      "[556]\tvalid_0's binary_logloss: 0.400818\n",
      "[557]\tvalid_0's binary_logloss: 0.400814\n",
      "[558]\tvalid_0's binary_logloss: 0.400807\n",
      "[559]\tvalid_0's binary_logloss: 0.400809\n",
      "[560]\tvalid_0's binary_logloss: 0.400807\n",
      "[561]\tvalid_0's binary_logloss: 0.400802\n",
      "[562]\tvalid_0's binary_logloss: 0.400796\n",
      "[563]\tvalid_0's binary_logloss: 0.400794\n",
      "[564]\tvalid_0's binary_logloss: 0.400786\n",
      "[565]\tvalid_0's binary_logloss: 0.400782\n",
      "[566]\tvalid_0's binary_logloss: 0.400776\n",
      "[567]\tvalid_0's binary_logloss: 0.400773\n",
      "[568]\tvalid_0's binary_logloss: 0.400774\n",
      "[569]\tvalid_0's binary_logloss: 0.400762\n",
      "[570]\tvalid_0's binary_logloss: 0.400768\n",
      "[571]\tvalid_0's binary_logloss: 0.400758\n",
      "[572]\tvalid_0's binary_logloss: 0.400757\n",
      "[573]\tvalid_0's binary_logloss: 0.400767\n",
      "[574]\tvalid_0's binary_logloss: 0.400753\n",
      "[575]\tvalid_0's binary_logloss: 0.400753\n",
      "[576]\tvalid_0's binary_logloss: 0.400744\n",
      "[577]\tvalid_0's binary_logloss: 0.400741\n",
      "[578]\tvalid_0's binary_logloss: 0.400725\n",
      "[579]\tvalid_0's binary_logloss: 0.400723\n",
      "[580]\tvalid_0's binary_logloss: 0.400724\n",
      "[581]\tvalid_0's binary_logloss: 0.400722\n",
      "[582]\tvalid_0's binary_logloss: 0.400725\n",
      "[583]\tvalid_0's binary_logloss: 0.400719\n",
      "[584]\tvalid_0's binary_logloss: 0.400717\n",
      "[585]\tvalid_0's binary_logloss: 0.400714\n",
      "[586]\tvalid_0's binary_logloss: 0.4007\n",
      "[587]\tvalid_0's binary_logloss: 0.400704\n",
      "[588]\tvalid_0's binary_logloss: 0.400706\n",
      "[589]\tvalid_0's binary_logloss: 0.400697\n",
      "[590]\tvalid_0's binary_logloss: 0.400689\n",
      "[591]\tvalid_0's binary_logloss: 0.400673\n",
      "[592]\tvalid_0's binary_logloss: 0.40066\n",
      "[593]\tvalid_0's binary_logloss: 0.400647\n",
      "[594]\tvalid_0's binary_logloss: 0.400647\n",
      "[595]\tvalid_0's binary_logloss: 0.400642\n",
      "[596]\tvalid_0's binary_logloss: 0.400647\n",
      "[597]\tvalid_0's binary_logloss: 0.400639\n",
      "[598]\tvalid_0's binary_logloss: 0.400632\n",
      "[599]\tvalid_0's binary_logloss: 0.400643\n",
      "[600]\tvalid_0's binary_logloss: 0.400625\n",
      "[601]\tvalid_0's binary_logloss: 0.400614\n",
      "[602]\tvalid_0's binary_logloss: 0.400606\n",
      "[603]\tvalid_0's binary_logloss: 0.400611\n",
      "[604]\tvalid_0's binary_logloss: 0.400622\n",
      "[605]\tvalid_0's binary_logloss: 0.400628\n",
      "[606]\tvalid_0's binary_logloss: 0.400621\n",
      "[607]\tvalid_0's binary_logloss: 0.400616\n",
      "[608]\tvalid_0's binary_logloss: 0.400612\n",
      "[609]\tvalid_0's binary_logloss: 0.400612\n",
      "[610]\tvalid_0's binary_logloss: 0.400614\n",
      "[611]\tvalid_0's binary_logloss: 0.40061\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[612]\tvalid_0's binary_logloss: 0.40061\n",
      "[613]\tvalid_0's binary_logloss: 0.400614\n",
      "[614]\tvalid_0's binary_logloss: 0.400603\n",
      "[615]\tvalid_0's binary_logloss: 0.4006\n",
      "[616]\tvalid_0's binary_logloss: 0.400601\n",
      "[617]\tvalid_0's binary_logloss: 0.400603\n",
      "[618]\tvalid_0's binary_logloss: 0.400607\n",
      "[619]\tvalid_0's binary_logloss: 0.40061\n",
      "[620]\tvalid_0's binary_logloss: 0.400615\n",
      "[621]\tvalid_0's binary_logloss: 0.4006\n",
      "[622]\tvalid_0's binary_logloss: 0.400597\n",
      "[623]\tvalid_0's binary_logloss: 0.400601\n",
      "[624]\tvalid_0's binary_logloss: 0.400591\n",
      "[625]\tvalid_0's binary_logloss: 0.400595\n",
      "[626]\tvalid_0's binary_logloss: 0.400594\n",
      "[627]\tvalid_0's binary_logloss: 0.40059\n",
      "[628]\tvalid_0's binary_logloss: 0.400588\n",
      "[629]\tvalid_0's binary_logloss: 0.400581\n",
      "[630]\tvalid_0's binary_logloss: 0.400583\n",
      "[631]\tvalid_0's binary_logloss: 0.400592\n",
      "[632]\tvalid_0's binary_logloss: 0.400599\n",
      "[633]\tvalid_0's binary_logloss: 0.400591\n",
      "[634]\tvalid_0's binary_logloss: 0.40059\n",
      "[635]\tvalid_0's binary_logloss: 0.400579\n",
      "[636]\tvalid_0's binary_logloss: 0.400586\n",
      "[637]\tvalid_0's binary_logloss: 0.400589\n",
      "[638]\tvalid_0's binary_logloss: 0.400602\n",
      "[639]\tvalid_0's binary_logloss: 0.400594\n",
      "[640]\tvalid_0's binary_logloss: 0.400609\n",
      "[641]\tvalid_0's binary_logloss: 0.400607\n",
      "[642]\tvalid_0's binary_logloss: 0.400606\n",
      "[643]\tvalid_0's binary_logloss: 0.400602\n",
      "[644]\tvalid_0's binary_logloss: 0.400604\n",
      "[645]\tvalid_0's binary_logloss: 0.40061\n",
      "[646]\tvalid_0's binary_logloss: 0.400603\n",
      "[647]\tvalid_0's binary_logloss: 0.40059\n",
      "[648]\tvalid_0's binary_logloss: 0.400596\n",
      "[649]\tvalid_0's binary_logloss: 0.400597\n",
      "[650]\tvalid_0's binary_logloss: 0.400603\n",
      "[651]\tvalid_0's binary_logloss: 0.400593\n",
      "[652]\tvalid_0's binary_logloss: 0.400587\n",
      "[653]\tvalid_0's binary_logloss: 0.400582\n",
      "[654]\tvalid_0's binary_logloss: 0.400579\n",
      "[655]\tvalid_0's binary_logloss: 0.40058\n",
      "[656]\tvalid_0's binary_logloss: 0.400569\n",
      "[657]\tvalid_0's binary_logloss: 0.400563\n",
      "[658]\tvalid_0's binary_logloss: 0.400562\n",
      "[659]\tvalid_0's binary_logloss: 0.400571\n",
      "[660]\tvalid_0's binary_logloss: 0.400574\n",
      "[661]\tvalid_0's binary_logloss: 0.400567\n",
      "[662]\tvalid_0's binary_logloss: 0.400563\n",
      "[663]\tvalid_0's binary_logloss: 0.400569\n",
      "[664]\tvalid_0's binary_logloss: 0.400581\n",
      "[665]\tvalid_0's binary_logloss: 0.400581\n",
      "[666]\tvalid_0's binary_logloss: 0.400577\n",
      "[667]\tvalid_0's binary_logloss: 0.400584\n",
      "[668]\tvalid_0's binary_logloss: 0.400579\n",
      "[669]\tvalid_0's binary_logloss: 0.400577\n",
      "[670]\tvalid_0's binary_logloss: 0.40057\n",
      "[671]\tvalid_0's binary_logloss: 0.400561\n",
      "[672]\tvalid_0's binary_logloss: 0.40055\n",
      "[673]\tvalid_0's binary_logloss: 0.400536\n",
      "[674]\tvalid_0's binary_logloss: 0.400539\n",
      "[675]\tvalid_0's binary_logloss: 0.400539\n",
      "[676]\tvalid_0's binary_logloss: 0.400538\n",
      "[677]\tvalid_0's binary_logloss: 0.400539\n",
      "[678]\tvalid_0's binary_logloss: 0.400536\n",
      "[679]\tvalid_0's binary_logloss: 0.400523\n",
      "[680]\tvalid_0's binary_logloss: 0.400529\n",
      "[681]\tvalid_0's binary_logloss: 0.400532\n",
      "[682]\tvalid_0's binary_logloss: 0.400515\n",
      "[683]\tvalid_0's binary_logloss: 0.400492\n",
      "[684]\tvalid_0's binary_logloss: 0.400497\n",
      "[685]\tvalid_0's binary_logloss: 0.400482\n",
      "[686]\tvalid_0's binary_logloss: 0.400473\n",
      "[687]\tvalid_0's binary_logloss: 0.400467\n",
      "[688]\tvalid_0's binary_logloss: 0.40047\n",
      "[689]\tvalid_0's binary_logloss: 0.400476\n",
      "[690]\tvalid_0's binary_logloss: 0.400467\n",
      "[691]\tvalid_0's binary_logloss: 0.400463\n",
      "[692]\tvalid_0's binary_logloss: 0.400459\n",
      "[693]\tvalid_0's binary_logloss: 0.400457\n",
      "[694]\tvalid_0's binary_logloss: 0.400455\n",
      "[695]\tvalid_0's binary_logloss: 0.400457\n",
      "[696]\tvalid_0's binary_logloss: 0.400448\n",
      "[697]\tvalid_0's binary_logloss: 0.400455\n",
      "[698]\tvalid_0's binary_logloss: 0.400449\n",
      "[699]\tvalid_0's binary_logloss: 0.400458\n",
      "[700]\tvalid_0's binary_logloss: 0.400459\n",
      "[701]\tvalid_0's binary_logloss: 0.400443\n",
      "[702]\tvalid_0's binary_logloss: 0.400439\n",
      "[703]\tvalid_0's binary_logloss: 0.400444\n",
      "[704]\tvalid_0's binary_logloss: 0.400451\n",
      "[705]\tvalid_0's binary_logloss: 0.400441\n",
      "[706]\tvalid_0's binary_logloss: 0.400438\n",
      "[707]\tvalid_0's binary_logloss: 0.400441\n",
      "[708]\tvalid_0's binary_logloss: 0.400452\n",
      "[709]\tvalid_0's binary_logloss: 0.400449\n",
      "[710]\tvalid_0's binary_logloss: 0.400454\n",
      "[711]\tvalid_0's binary_logloss: 0.400453\n",
      "[712]\tvalid_0's binary_logloss: 0.400462\n",
      "[713]\tvalid_0's binary_logloss: 0.400458\n",
      "[714]\tvalid_0's binary_logloss: 0.400456\n",
      "[715]\tvalid_0's binary_logloss: 0.400468\n",
      "[716]\tvalid_0's binary_logloss: 0.400462\n",
      "[717]\tvalid_0's binary_logloss: 0.400455\n",
      "[718]\tvalid_0's binary_logloss: 0.40045\n",
      "[719]\tvalid_0's binary_logloss: 0.400451\n",
      "[720]\tvalid_0's binary_logloss: 0.400441\n",
      "[721]\tvalid_0's binary_logloss: 0.400443\n",
      "[722]\tvalid_0's binary_logloss: 0.400447\n",
      "[723]\tvalid_0's binary_logloss: 0.400437\n",
      "[724]\tvalid_0's binary_logloss: 0.40044\n",
      "[725]\tvalid_0's binary_logloss: 0.400447\n",
      "[726]\tvalid_0's binary_logloss: 0.400444\n",
      "[727]\tvalid_0's binary_logloss: 0.400445\n",
      "[728]\tvalid_0's binary_logloss: 0.400433\n",
      "[729]\tvalid_0's binary_logloss: 0.400432\n",
      "[730]\tvalid_0's binary_logloss: 0.40042\n",
      "[731]\tvalid_0's binary_logloss: 0.400413\n",
      "[732]\tvalid_0's binary_logloss: 0.400411\n",
      "[733]\tvalid_0's binary_logloss: 0.400411\n",
      "[734]\tvalid_0's binary_logloss: 0.400409\n",
      "[735]\tvalid_0's binary_logloss: 0.400409\n",
      "[736]\tvalid_0's binary_logloss: 0.400406\n",
      "[737]\tvalid_0's binary_logloss: 0.400392\n",
      "[738]\tvalid_0's binary_logloss: 0.40039\n",
      "[739]\tvalid_0's binary_logloss: 0.400393\n",
      "[740]\tvalid_0's binary_logloss: 0.4004\n",
      "[741]\tvalid_0's binary_logloss: 0.4004\n",
      "[742]\tvalid_0's binary_logloss: 0.400403\n",
      "[743]\tvalid_0's binary_logloss: 0.400405\n",
      "[744]\tvalid_0's binary_logloss: 0.400403\n",
      "[745]\tvalid_0's binary_logloss: 0.400411\n",
      "[746]\tvalid_0's binary_logloss: 0.400405\n",
      "[747]\tvalid_0's binary_logloss: 0.400401\n",
      "[748]\tvalid_0's binary_logloss: 0.400398\n",
      "[749]\tvalid_0's binary_logloss: 0.400392\n",
      "[750]\tvalid_0's binary_logloss: 0.400397\n",
      "[751]\tvalid_0's binary_logloss: 0.400394\n",
      "[752]\tvalid_0's binary_logloss: 0.400391\n",
      "[753]\tvalid_0's binary_logloss: 0.400399\n",
      "[754]\tvalid_0's binary_logloss: 0.400393\n",
      "[755]\tvalid_0's binary_logloss: 0.400385\n",
      "[756]\tvalid_0's binary_logloss: 0.400384\n",
      "[757]\tvalid_0's binary_logloss: 0.400374\n",
      "[758]\tvalid_0's binary_logloss: 0.400374\n",
      "[759]\tvalid_0's binary_logloss: 0.400372\n",
      "[760]\tvalid_0's binary_logloss: 0.400371\n",
      "[761]\tvalid_0's binary_logloss: 0.40037\n",
      "[762]\tvalid_0's binary_logloss: 0.400373\n",
      "[763]\tvalid_0's binary_logloss: 0.400374\n",
      "[764]\tvalid_0's binary_logloss: 0.400376\n",
      "[765]\tvalid_0's binary_logloss: 0.400383\n",
      "[766]\tvalid_0's binary_logloss: 0.400381\n",
      "[767]\tvalid_0's binary_logloss: 0.400385\n",
      "[768]\tvalid_0's binary_logloss: 0.400381\n",
      "[769]\tvalid_0's binary_logloss: 0.400379\n",
      "[770]\tvalid_0's binary_logloss: 0.400381\n",
      "[771]\tvalid_0's binary_logloss: 0.400384\n",
      "[772]\tvalid_0's binary_logloss: 0.400376\n",
      "[773]\tvalid_0's binary_logloss: 0.40037\n",
      "[774]\tvalid_0's binary_logloss: 0.400366\n",
      "[775]\tvalid_0's binary_logloss: 0.40037\n",
      "[776]\tvalid_0's binary_logloss: 0.400364\n",
      "[777]\tvalid_0's binary_logloss: 0.400365\n",
      "[778]\tvalid_0's binary_logloss: 0.400363\n",
      "[779]\tvalid_0's binary_logloss: 0.400361\n",
      "[780]\tvalid_0's binary_logloss: 0.400367\n",
      "[781]\tvalid_0's binary_logloss: 0.400354\n",
      "[782]\tvalid_0's binary_logloss: 0.400355\n",
      "[783]\tvalid_0's binary_logloss: 0.400359\n",
      "[784]\tvalid_0's binary_logloss: 0.400348\n",
      "[785]\tvalid_0's binary_logloss: 0.400353\n",
      "[786]\tvalid_0's binary_logloss: 0.400355\n",
      "[787]\tvalid_0's binary_logloss: 0.400355\n",
      "[788]\tvalid_0's binary_logloss: 0.40035\n",
      "[789]\tvalid_0's binary_logloss: 0.400341\n",
      "[790]\tvalid_0's binary_logloss: 0.400343\n",
      "[791]\tvalid_0's binary_logloss: 0.400348\n",
      "[792]\tvalid_0's binary_logloss: 0.400352\n",
      "[793]\tvalid_0's binary_logloss: 0.400348\n",
      "[794]\tvalid_0's binary_logloss: 0.400349\n",
      "[795]\tvalid_0's binary_logloss: 0.400346\n",
      "[796]\tvalid_0's binary_logloss: 0.400341\n",
      "[797]\tvalid_0's binary_logloss: 0.400341\n",
      "[798]\tvalid_0's binary_logloss: 0.40034\n",
      "[799]\tvalid_0's binary_logloss: 0.400331\n",
      "[800]\tvalid_0's binary_logloss: 0.400334\n",
      "[801]\tvalid_0's binary_logloss: 0.400332\n",
      "[802]\tvalid_0's binary_logloss: 0.400327\n",
      "[803]\tvalid_0's binary_logloss: 0.400319\n",
      "[804]\tvalid_0's binary_logloss: 0.400318\n",
      "[805]\tvalid_0's binary_logloss: 0.400326\n",
      "[806]\tvalid_0's binary_logloss: 0.40032\n",
      "[807]\tvalid_0's binary_logloss: 0.400309\n",
      "[808]\tvalid_0's binary_logloss: 0.400304\n",
      "[809]\tvalid_0's binary_logloss: 0.4003\n",
      "[810]\tvalid_0's binary_logloss: 0.400303\n",
      "[811]\tvalid_0's binary_logloss: 0.400292\n",
      "[812]\tvalid_0's binary_logloss: 0.400287\n",
      "[813]\tvalid_0's binary_logloss: 0.400277\n",
      "[814]\tvalid_0's binary_logloss: 0.400274\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[815]\tvalid_0's binary_logloss: 0.400267\n",
      "[816]\tvalid_0's binary_logloss: 0.400269\n",
      "[817]\tvalid_0's binary_logloss: 0.400278\n",
      "[818]\tvalid_0's binary_logloss: 0.400282\n",
      "[819]\tvalid_0's binary_logloss: 0.400282\n",
      "[820]\tvalid_0's binary_logloss: 0.400277\n",
      "[821]\tvalid_0's binary_logloss: 0.400269\n",
      "[822]\tvalid_0's binary_logloss: 0.400278\n",
      "[823]\tvalid_0's binary_logloss: 0.400271\n",
      "[824]\tvalid_0's binary_logloss: 0.40027\n",
      "[825]\tvalid_0's binary_logloss: 0.400282\n",
      "[826]\tvalid_0's binary_logloss: 0.400276\n",
      "[827]\tvalid_0's binary_logloss: 0.400276\n",
      "[828]\tvalid_0's binary_logloss: 0.400267\n",
      "[829]\tvalid_0's binary_logloss: 0.400268\n",
      "[830]\tvalid_0's binary_logloss: 0.400261\n",
      "[831]\tvalid_0's binary_logloss: 0.400257\n",
      "[832]\tvalid_0's binary_logloss: 0.400261\n",
      "[833]\tvalid_0's binary_logloss: 0.400247\n",
      "[834]\tvalid_0's binary_logloss: 0.400253\n",
      "[835]\tvalid_0's binary_logloss: 0.400249\n",
      "[836]\tvalid_0's binary_logloss: 0.400235\n",
      "[837]\tvalid_0's binary_logloss: 0.400239\n",
      "[838]\tvalid_0's binary_logloss: 0.400233\n",
      "[839]\tvalid_0's binary_logloss: 0.400234\n",
      "[840]\tvalid_0's binary_logloss: 0.400234\n",
      "[841]\tvalid_0's binary_logloss: 0.400241\n",
      "[842]\tvalid_0's binary_logloss: 0.400236\n",
      "[843]\tvalid_0's binary_logloss: 0.400235\n",
      "[844]\tvalid_0's binary_logloss: 0.400244\n",
      "[845]\tvalid_0's binary_logloss: 0.400246\n",
      "[846]\tvalid_0's binary_logloss: 0.400247\n",
      "[847]\tvalid_0's binary_logloss: 0.400245\n",
      "[848]\tvalid_0's binary_logloss: 0.400227\n",
      "[849]\tvalid_0's binary_logloss: 0.400223\n",
      "[850]\tvalid_0's binary_logloss: 0.400221\n",
      "[851]\tvalid_0's binary_logloss: 0.400226\n",
      "[852]\tvalid_0's binary_logloss: 0.400231\n",
      "[853]\tvalid_0's binary_logloss: 0.400233\n",
      "[854]\tvalid_0's binary_logloss: 0.400241\n",
      "[855]\tvalid_0's binary_logloss: 0.400254\n",
      "[856]\tvalid_0's binary_logloss: 0.400246\n",
      "[857]\tvalid_0's binary_logloss: 0.400246\n",
      "[858]\tvalid_0's binary_logloss: 0.400257\n",
      "[859]\tvalid_0's binary_logloss: 0.400258\n",
      "[860]\tvalid_0's binary_logloss: 0.400257\n",
      "[861]\tvalid_0's binary_logloss: 0.400253\n",
      "[862]\tvalid_0's binary_logloss: 0.400258\n",
      "[863]\tvalid_0's binary_logloss: 0.400261\n",
      "[864]\tvalid_0's binary_logloss: 0.400263\n",
      "[865]\tvalid_0's binary_logloss: 0.400267\n",
      "[866]\tvalid_0's binary_logloss: 0.400259\n",
      "[867]\tvalid_0's binary_logloss: 0.400261\n",
      "[868]\tvalid_0's binary_logloss: 0.400263\n",
      "[869]\tvalid_0's binary_logloss: 0.400264\n",
      "[870]\tvalid_0's binary_logloss: 0.400279\n",
      "[871]\tvalid_0's binary_logloss: 0.400268\n",
      "[872]\tvalid_0's binary_logloss: 0.400276\n",
      "[873]\tvalid_0's binary_logloss: 0.400273\n",
      "[874]\tvalid_0's binary_logloss: 0.400273\n",
      "[875]\tvalid_0's binary_logloss: 0.400277\n",
      "[876]\tvalid_0's binary_logloss: 0.400279\n",
      "[877]\tvalid_0's binary_logloss: 0.400279\n",
      "[878]\tvalid_0's binary_logloss: 0.400282\n",
      "[879]\tvalid_0's binary_logloss: 0.400286\n",
      "[880]\tvalid_0's binary_logloss: 0.400287\n",
      "[881]\tvalid_0's binary_logloss: 0.400286\n",
      "[882]\tvalid_0's binary_logloss: 0.400294\n",
      "[883]\tvalid_0's binary_logloss: 0.400298\n",
      "[884]\tvalid_0's binary_logloss: 0.4003\n",
      "[885]\tvalid_0's binary_logloss: 0.400307\n",
      "[886]\tvalid_0's binary_logloss: 0.400304\n",
      "[887]\tvalid_0's binary_logloss: 0.4003\n",
      "[888]\tvalid_0's binary_logloss: 0.400303\n",
      "[889]\tvalid_0's binary_logloss: 0.400302\n",
      "[890]\tvalid_0's binary_logloss: 0.4003\n",
      "[891]\tvalid_0's binary_logloss: 0.400298\n",
      "[892]\tvalid_0's binary_logloss: 0.400297\n",
      "[893]\tvalid_0's binary_logloss: 0.400299\n",
      "[894]\tvalid_0's binary_logloss: 0.400293\n",
      "[895]\tvalid_0's binary_logloss: 0.400289\n",
      "[896]\tvalid_0's binary_logloss: 0.400287\n",
      "[897]\tvalid_0's binary_logloss: 0.400285\n",
      "[898]\tvalid_0's binary_logloss: 0.400284\n",
      "[899]\tvalid_0's binary_logloss: 0.400273\n",
      "[900]\tvalid_0's binary_logloss: 0.400271\n",
      "[901]\tvalid_0's binary_logloss: 0.400264\n",
      "[902]\tvalid_0's binary_logloss: 0.400261\n",
      "[903]\tvalid_0's binary_logloss: 0.400263\n",
      "[904]\tvalid_0's binary_logloss: 0.400265\n",
      "[905]\tvalid_0's binary_logloss: 0.400262\n",
      "[906]\tvalid_0's binary_logloss: 0.400258\n",
      "[907]\tvalid_0's binary_logloss: 0.400261\n",
      "[908]\tvalid_0's binary_logloss: 0.400258\n",
      "[909]\tvalid_0's binary_logloss: 0.400252\n",
      "[910]\tvalid_0's binary_logloss: 0.400248\n",
      "[911]\tvalid_0's binary_logloss: 0.400248\n",
      "[912]\tvalid_0's binary_logloss: 0.40025\n",
      "[913]\tvalid_0's binary_logloss: 0.40026\n",
      "[914]\tvalid_0's binary_logloss: 0.400266\n",
      "[915]\tvalid_0's binary_logloss: 0.400268\n",
      "[916]\tvalid_0's binary_logloss: 0.400265\n",
      "[917]\tvalid_0's binary_logloss: 0.400261\n",
      "[918]\tvalid_0's binary_logloss: 0.40026\n",
      "[919]\tvalid_0's binary_logloss: 0.400275\n",
      "[920]\tvalid_0's binary_logloss: 0.400278\n",
      "[921]\tvalid_0's binary_logloss: 0.400271\n",
      "[922]\tvalid_0's binary_logloss: 0.400263\n",
      "[923]\tvalid_0's binary_logloss: 0.400267\n",
      "[924]\tvalid_0's binary_logloss: 0.40027\n",
      "[925]\tvalid_0's binary_logloss: 0.400274\n",
      "[926]\tvalid_0's binary_logloss: 0.400272\n",
      "[927]\tvalid_0's binary_logloss: 0.400277\n",
      "[928]\tvalid_0's binary_logloss: 0.40028\n",
      "[929]\tvalid_0's binary_logloss: 0.400282\n",
      "[930]\tvalid_0's binary_logloss: 0.400274\n",
      "[931]\tvalid_0's binary_logloss: 0.400253\n",
      "[932]\tvalid_0's binary_logloss: 0.400256\n",
      "[933]\tvalid_0's binary_logloss: 0.400249\n",
      "[934]\tvalid_0's binary_logloss: 0.400235\n",
      "[935]\tvalid_0's binary_logloss: 0.40023\n",
      "[936]\tvalid_0's binary_logloss: 0.400227\n",
      "[937]\tvalid_0's binary_logloss: 0.400223\n",
      "[938]\tvalid_0's binary_logloss: 0.400226\n",
      "[939]\tvalid_0's binary_logloss: 0.400226\n",
      "[940]\tvalid_0's binary_logloss: 0.400223\n",
      "[941]\tvalid_0's binary_logloss: 0.400214\n",
      "[942]\tvalid_0's binary_logloss: 0.400215\n",
      "[943]\tvalid_0's binary_logloss: 0.400226\n",
      "[944]\tvalid_0's binary_logloss: 0.400227\n",
      "[945]\tvalid_0's binary_logloss: 0.400227\n",
      "[946]\tvalid_0's binary_logloss: 0.400225\n",
      "[947]\tvalid_0's binary_logloss: 0.40022\n",
      "[948]\tvalid_0's binary_logloss: 0.400221\n",
      "[949]\tvalid_0's binary_logloss: 0.40021\n",
      "[950]\tvalid_0's binary_logloss: 0.400213\n",
      "[951]\tvalid_0's binary_logloss: 0.400204\n",
      "[952]\tvalid_0's binary_logloss: 0.400201\n",
      "[953]\tvalid_0's binary_logloss: 0.400202\n",
      "[954]\tvalid_0's binary_logloss: 0.400201\n",
      "[955]\tvalid_0's binary_logloss: 0.400198\n",
      "[956]\tvalid_0's binary_logloss: 0.400198\n",
      "[957]\tvalid_0's binary_logloss: 0.400196\n",
      "[958]\tvalid_0's binary_logloss: 0.400196\n",
      "[959]\tvalid_0's binary_logloss: 0.400199\n",
      "[960]\tvalid_0's binary_logloss: 0.400204\n",
      "[961]\tvalid_0's binary_logloss: 0.400199\n",
      "[962]\tvalid_0's binary_logloss: 0.400199\n",
      "[963]\tvalid_0's binary_logloss: 0.400201\n",
      "[964]\tvalid_0's binary_logloss: 0.400211\n",
      "[965]\tvalid_0's binary_logloss: 0.400213\n",
      "[966]\tvalid_0's binary_logloss: 0.400223\n",
      "[967]\tvalid_0's binary_logloss: 0.400232\n",
      "[968]\tvalid_0's binary_logloss: 0.400233\n",
      "[969]\tvalid_0's binary_logloss: 0.400231\n",
      "[970]\tvalid_0's binary_logloss: 0.400241\n",
      "[971]\tvalid_0's binary_logloss: 0.400237\n",
      "[972]\tvalid_0's binary_logloss: 0.400237\n",
      "[973]\tvalid_0's binary_logloss: 0.400242\n",
      "[974]\tvalid_0's binary_logloss: 0.400246\n",
      "[975]\tvalid_0's binary_logloss: 0.400252\n",
      "[976]\tvalid_0's binary_logloss: 0.400248\n",
      "[977]\tvalid_0's binary_logloss: 0.400251\n",
      "[978]\tvalid_0's binary_logloss: 0.400257\n",
      "[979]\tvalid_0's binary_logloss: 0.40025\n",
      "[980]\tvalid_0's binary_logloss: 0.40024\n",
      "[981]\tvalid_0's binary_logloss: 0.400245\n",
      "[982]\tvalid_0's binary_logloss: 0.400247\n",
      "[983]\tvalid_0's binary_logloss: 0.400254\n",
      "[984]\tvalid_0's binary_logloss: 0.400248\n",
      "[985]\tvalid_0's binary_logloss: 0.400251\n",
      "[986]\tvalid_0's binary_logloss: 0.400251\n",
      "[987]\tvalid_0's binary_logloss: 0.400254\n",
      "[988]\tvalid_0's binary_logloss: 0.400249\n",
      "[989]\tvalid_0's binary_logloss: 0.400257\n",
      "[990]\tvalid_0's binary_logloss: 0.400255\n",
      "[991]\tvalid_0's binary_logloss: 0.400251\n",
      "[992]\tvalid_0's binary_logloss: 0.400246\n",
      "[993]\tvalid_0's binary_logloss: 0.400234\n",
      "[994]\tvalid_0's binary_logloss: 0.400222\n",
      "[995]\tvalid_0's binary_logloss: 0.400213\n",
      "[996]\tvalid_0's binary_logloss: 0.400217\n",
      "[997]\tvalid_0's binary_logloss: 0.40021\n",
      "[998]\tvalid_0's binary_logloss: 0.40021\n",
      "[999]\tvalid_0's binary_logloss: 0.40021\n",
      "[1000]\tvalid_0's binary_logloss: 0.400221\n",
      "[1001]\tvalid_0's binary_logloss: 0.400215\n",
      "[1002]\tvalid_0's binary_logloss: 0.40022\n",
      "[1003]\tvalid_0's binary_logloss: 0.40023\n",
      "[1004]\tvalid_0's binary_logloss: 0.400232\n",
      "[1005]\tvalid_0's binary_logloss: 0.400241\n",
      "[1006]\tvalid_0's binary_logloss: 0.400239\n",
      "[1007]\tvalid_0's binary_logloss: 0.400231\n",
      "[1008]\tvalid_0's binary_logloss: 0.400228\n",
      "[1009]\tvalid_0's binary_logloss: 0.400232\n",
      "[1010]\tvalid_0's binary_logloss: 0.400231\n",
      "[1011]\tvalid_0's binary_logloss: 0.400233\n",
      "[1012]\tvalid_0's binary_logloss: 0.400225\n",
      "[1013]\tvalid_0's binary_logloss: 0.400214\n",
      "[1014]\tvalid_0's binary_logloss: 0.400213\n",
      "[1015]\tvalid_0's binary_logloss: 0.40021\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1016]\tvalid_0's binary_logloss: 0.400219\n",
      "[1017]\tvalid_0's binary_logloss: 0.400227\n",
      "[1018]\tvalid_0's binary_logloss: 0.400239\n",
      "[1019]\tvalid_0's binary_logloss: 0.400248\n",
      "[1020]\tvalid_0's binary_logloss: 0.400258\n",
      "[1021]\tvalid_0's binary_logloss: 0.400274\n",
      "[1022]\tvalid_0's binary_logloss: 0.400282\n",
      "[1023]\tvalid_0's binary_logloss: 0.400281\n",
      "[1024]\tvalid_0's binary_logloss: 0.400282\n",
      "[1025]\tvalid_0's binary_logloss: 0.400286\n",
      "[1026]\tvalid_0's binary_logloss: 0.400281\n",
      "[1027]\tvalid_0's binary_logloss: 0.400289\n",
      "[1028]\tvalid_0's binary_logloss: 0.400287\n",
      "[1029]\tvalid_0's binary_logloss: 0.400283\n",
      "[1030]\tvalid_0's binary_logloss: 0.400282\n",
      "[1031]\tvalid_0's binary_logloss: 0.400274\n",
      "[1032]\tvalid_0's binary_logloss: 0.400274\n",
      "[1033]\tvalid_0's binary_logloss: 0.400272\n",
      "[1034]\tvalid_0's binary_logloss: 0.400279\n",
      "[1035]\tvalid_0's binary_logloss: 0.400273\n",
      "[1036]\tvalid_0's binary_logloss: 0.400275\n",
      "[1037]\tvalid_0's binary_logloss: 0.400284\n",
      "[1038]\tvalid_0's binary_logloss: 0.40029\n",
      "[1039]\tvalid_0's binary_logloss: 0.400295\n",
      "[1040]\tvalid_0's binary_logloss: 0.400299\n",
      "[1041]\tvalid_0's binary_logloss: 0.40031\n",
      "[1042]\tvalid_0's binary_logloss: 0.400314\n",
      "[1043]\tvalid_0's binary_logloss: 0.400298\n",
      "[1044]\tvalid_0's binary_logloss: 0.40029\n",
      "[1045]\tvalid_0's binary_logloss: 0.400296\n",
      "[1046]\tvalid_0's binary_logloss: 0.400295\n",
      "[1047]\tvalid_0's binary_logloss: 0.400288\n",
      "[1048]\tvalid_0's binary_logloss: 0.400288\n",
      "[1049]\tvalid_0's binary_logloss: 0.400285\n",
      "[1050]\tvalid_0's binary_logloss: 0.400287\n",
      "[1051]\tvalid_0's binary_logloss: 0.400285\n",
      "[1052]\tvalid_0's binary_logloss: 0.400285\n",
      "[1053]\tvalid_0's binary_logloss: 0.400287\n",
      "[1054]\tvalid_0's binary_logloss: 0.400295\n",
      "[1055]\tvalid_0's binary_logloss: 0.400304\n",
      "[1056]\tvalid_0's binary_logloss: 0.40031\n",
      "[1057]\tvalid_0's binary_logloss: 0.400304\n",
      "[1058]\tvalid_0's binary_logloss: 0.400308\n",
      "[1059]\tvalid_0's binary_logloss: 0.400309\n",
      "[1060]\tvalid_0's binary_logloss: 0.400297\n",
      "[1061]\tvalid_0's binary_logloss: 0.400296\n",
      "[1062]\tvalid_0's binary_logloss: 0.400298\n",
      "[1063]\tvalid_0's binary_logloss: 0.400309\n",
      "[1064]\tvalid_0's binary_logloss: 0.400307\n",
      "[1065]\tvalid_0's binary_logloss: 0.400307\n",
      "[1066]\tvalid_0's binary_logloss: 0.400312\n",
      "[1067]\tvalid_0's binary_logloss: 0.400319\n",
      "[1068]\tvalid_0's binary_logloss: 0.400324\n",
      "[1069]\tvalid_0's binary_logloss: 0.400326\n",
      "[1070]\tvalid_0's binary_logloss: 0.400329\n",
      "[1071]\tvalid_0's binary_logloss: 0.400328\n",
      "[1072]\tvalid_0's binary_logloss: 0.400324\n",
      "[1073]\tvalid_0's binary_logloss: 0.400323\n",
      "[1074]\tvalid_0's binary_logloss: 0.400323\n",
      "[1075]\tvalid_0's binary_logloss: 0.400322\n",
      "[1076]\tvalid_0's binary_logloss: 0.400326\n",
      "[1077]\tvalid_0's binary_logloss: 0.400324\n",
      "[1078]\tvalid_0's binary_logloss: 0.40032\n",
      "[1079]\tvalid_0's binary_logloss: 0.400323\n",
      "[1080]\tvalid_0's binary_logloss: 0.40032\n",
      "[1081]\tvalid_0's binary_logloss: 0.400312\n",
      "[1082]\tvalid_0's binary_logloss: 0.400304\n",
      "[1083]\tvalid_0's binary_logloss: 0.400298\n",
      "[1084]\tvalid_0's binary_logloss: 0.400296\n",
      "[1085]\tvalid_0's binary_logloss: 0.400303\n",
      "[1086]\tvalid_0's binary_logloss: 0.400293\n",
      "[1087]\tvalid_0's binary_logloss: 0.400289\n",
      "[1088]\tvalid_0's binary_logloss: 0.400285\n",
      "[1089]\tvalid_0's binary_logloss: 0.400292\n",
      "[1090]\tvalid_0's binary_logloss: 0.400288\n",
      "[1091]\tvalid_0's binary_logloss: 0.400286\n",
      "[1092]\tvalid_0's binary_logloss: 0.400278\n",
      "[1093]\tvalid_0's binary_logloss: 0.400275\n",
      "[1094]\tvalid_0's binary_logloss: 0.400271\n",
      "[1095]\tvalid_0's binary_logloss: 0.400269\n",
      "[1096]\tvalid_0's binary_logloss: 0.400272\n",
      "[1097]\tvalid_0's binary_logloss: 0.400271\n",
      "[1098]\tvalid_0's binary_logloss: 0.400273\n",
      "[1099]\tvalid_0's binary_logloss: 0.400273\n",
      "[1100]\tvalid_0's binary_logloss: 0.400278\n",
      "[1101]\tvalid_0's binary_logloss: 0.400264\n",
      "[1102]\tvalid_0's binary_logloss: 0.40026\n",
      "[1103]\tvalid_0's binary_logloss: 0.400249\n",
      "[1104]\tvalid_0's binary_logloss: 0.400255\n",
      "[1105]\tvalid_0's binary_logloss: 0.40025\n",
      "[1106]\tvalid_0's binary_logloss: 0.400254\n",
      "[1107]\tvalid_0's binary_logloss: 0.400246\n",
      "[1108]\tvalid_0's binary_logloss: 0.400243\n",
      "[1109]\tvalid_0's binary_logloss: 0.400239\n",
      "[1110]\tvalid_0's binary_logloss: 0.40024\n",
      "[1111]\tvalid_0's binary_logloss: 0.400241\n",
      "[1112]\tvalid_0's binary_logloss: 0.400246\n",
      "[1113]\tvalid_0's binary_logloss: 0.40025\n",
      "[1114]\tvalid_0's binary_logloss: 0.400255\n",
      "[1115]\tvalid_0's binary_logloss: 0.400255\n",
      "[1116]\tvalid_0's binary_logloss: 0.400251\n",
      "[1117]\tvalid_0's binary_logloss: 0.400255\n",
      "[1118]\tvalid_0's binary_logloss: 0.400261\n",
      "[1119]\tvalid_0's binary_logloss: 0.400262\n",
      "[1120]\tvalid_0's binary_logloss: 0.40026\n",
      "[1121]\tvalid_0's binary_logloss: 0.400251\n",
      "[1122]\tvalid_0's binary_logloss: 0.400239\n",
      "[1123]\tvalid_0's binary_logloss: 0.400236\n",
      "[1124]\tvalid_0's binary_logloss: 0.40023\n",
      "[1125]\tvalid_0's binary_logloss: 0.400221\n",
      "[1126]\tvalid_0's binary_logloss: 0.400224\n",
      "[1127]\tvalid_0's binary_logloss: 0.400228\n",
      "[1128]\tvalid_0's binary_logloss: 0.400226\n",
      "[1129]\tvalid_0's binary_logloss: 0.400221\n",
      "[1130]\tvalid_0's binary_logloss: 0.400225\n",
      "[1131]\tvalid_0's binary_logloss: 0.400219\n",
      "[1132]\tvalid_0's binary_logloss: 0.400218\n",
      "[1133]\tvalid_0's binary_logloss: 0.40022\n",
      "[1134]\tvalid_0's binary_logloss: 0.400225\n",
      "[1135]\tvalid_0's binary_logloss: 0.40024\n",
      "[1136]\tvalid_0's binary_logloss: 0.400258\n",
      "[1137]\tvalid_0's binary_logloss: 0.400236\n",
      "[1138]\tvalid_0's binary_logloss: 0.400237\n",
      "[1139]\tvalid_0's binary_logloss: 0.40022\n",
      "[1140]\tvalid_0's binary_logloss: 0.400222\n",
      "[1141]\tvalid_0's binary_logloss: 0.400224\n",
      "[1142]\tvalid_0's binary_logloss: 0.40023\n",
      "[1143]\tvalid_0's binary_logloss: 0.400229\n",
      "[1144]\tvalid_0's binary_logloss: 0.400222\n",
      "[1145]\tvalid_0's binary_logloss: 0.400231\n",
      "[1146]\tvalid_0's binary_logloss: 0.400231\n",
      "[1147]\tvalid_0's binary_logloss: 0.40023\n",
      "[1148]\tvalid_0's binary_logloss: 0.400227\n",
      "[1149]\tvalid_0's binary_logloss: 0.400224\n",
      "[1150]\tvalid_0's binary_logloss: 0.400228\n",
      "[1151]\tvalid_0's binary_logloss: 0.400214\n",
      "[1152]\tvalid_0's binary_logloss: 0.400205\n",
      "[1153]\tvalid_0's binary_logloss: 0.400215\n",
      "[1154]\tvalid_0's binary_logloss: 0.400217\n",
      "[1155]\tvalid_0's binary_logloss: 0.400227\n",
      "[1156]\tvalid_0's binary_logloss: 0.400231\n",
      "[1157]\tvalid_0's binary_logloss: 0.400237\n",
      "[1158]\tvalid_0's binary_logloss: 0.400244\n",
      "[1159]\tvalid_0's binary_logloss: 0.400239\n",
      "[1160]\tvalid_0's binary_logloss: 0.400242\n",
      "[1161]\tvalid_0's binary_logloss: 0.400246\n",
      "[1162]\tvalid_0's binary_logloss: 0.400244\n",
      "[1163]\tvalid_0's binary_logloss: 0.400252\n",
      "[1164]\tvalid_0's binary_logloss: 0.400256\n",
      "[1165]\tvalid_0's binary_logloss: 0.400263\n",
      "[1166]\tvalid_0's binary_logloss: 0.400275\n",
      "[1167]\tvalid_0's binary_logloss: 0.400277\n",
      "[1168]\tvalid_0's binary_logloss: 0.400265\n",
      "[1169]\tvalid_0's binary_logloss: 0.400265\n",
      "[1170]\tvalid_0's binary_logloss: 0.400272\n",
      "[1171]\tvalid_0's binary_logloss: 0.400272\n",
      "[1172]\tvalid_0's binary_logloss: 0.400272\n",
      "[1173]\tvalid_0's binary_logloss: 0.400285\n",
      "[1174]\tvalid_0's binary_logloss: 0.400285\n",
      "[1175]\tvalid_0's binary_logloss: 0.40028\n",
      "[1176]\tvalid_0's binary_logloss: 0.400285\n",
      "[1177]\tvalid_0's binary_logloss: 0.400283\n",
      "[1178]\tvalid_0's binary_logloss: 0.400293\n",
      "[1179]\tvalid_0's binary_logloss: 0.400285\n",
      "[1180]\tvalid_0's binary_logloss: 0.40028\n",
      "[1181]\tvalid_0's binary_logloss: 0.400278\n",
      "[1182]\tvalid_0's binary_logloss: 0.400285\n",
      "[1183]\tvalid_0's binary_logloss: 0.400299\n",
      "[1184]\tvalid_0's binary_logloss: 0.400305\n",
      "[1185]\tvalid_0's binary_logloss: 0.4003\n",
      "[1186]\tvalid_0's binary_logloss: 0.400314\n",
      "[1187]\tvalid_0's binary_logloss: 0.400322\n",
      "[1188]\tvalid_0's binary_logloss: 0.400332\n",
      "[1189]\tvalid_0's binary_logloss: 0.400336\n",
      "[1190]\tvalid_0's binary_logloss: 0.400335\n",
      "[1191]\tvalid_0's binary_logloss: 0.400338\n",
      "[1192]\tvalid_0's binary_logloss: 0.400342\n",
      "[1193]\tvalid_0's binary_logloss: 0.400339\n",
      "[1194]\tvalid_0's binary_logloss: 0.40034\n",
      "[1195]\tvalid_0's binary_logloss: 0.400336\n",
      "[1196]\tvalid_0's binary_logloss: 0.400324\n",
      "[1197]\tvalid_0's binary_logloss: 0.40033\n",
      "[1198]\tvalid_0's binary_logloss: 0.40033\n",
      "[1199]\tvalid_0's binary_logloss: 0.400334\n",
      "[1200]\tvalid_0's binary_logloss: 0.400343\n",
      "[1201]\tvalid_0's binary_logloss: 0.400343\n",
      "[1202]\tvalid_0's binary_logloss: 0.400352\n",
      "[1203]\tvalid_0's binary_logloss: 0.400353\n",
      "[1204]\tvalid_0's binary_logloss: 0.400357\n",
      "[1205]\tvalid_0's binary_logloss: 0.400364\n",
      "[1206]\tvalid_0's binary_logloss: 0.400361\n",
      "[1207]\tvalid_0's binary_logloss: 0.400361\n",
      "[1208]\tvalid_0's binary_logloss: 0.400363\n",
      "[1209]\tvalid_0's binary_logloss: 0.400371\n",
      "[1210]\tvalid_0's binary_logloss: 0.400374\n",
      "[1211]\tvalid_0's binary_logloss: 0.400372\n",
      "[1212]\tvalid_0's binary_logloss: 0.400366\n",
      "[1213]\tvalid_0's binary_logloss: 0.400377\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1214]\tvalid_0's binary_logloss: 0.400382\n",
      "[1215]\tvalid_0's binary_logloss: 0.400392\n",
      "[1216]\tvalid_0's binary_logloss: 0.400387\n",
      "[1217]\tvalid_0's binary_logloss: 0.400392\n",
      "[1218]\tvalid_0's binary_logloss: 0.400387\n",
      "[1219]\tvalid_0's binary_logloss: 0.400383\n",
      "[1220]\tvalid_0's binary_logloss: 0.400379\n",
      "[1221]\tvalid_0's binary_logloss: 0.400373\n",
      "[1222]\tvalid_0's binary_logloss: 0.40037\n",
      "[1223]\tvalid_0's binary_logloss: 0.400372\n",
      "[1224]\tvalid_0's binary_logloss: 0.400356\n",
      "[1225]\tvalid_0's binary_logloss: 0.400364\n",
      "[1226]\tvalid_0's binary_logloss: 0.400359\n",
      "[1227]\tvalid_0's binary_logloss: 0.400352\n",
      "[1228]\tvalid_0's binary_logloss: 0.400365\n",
      "[1229]\tvalid_0's binary_logloss: 0.400369\n",
      "[1230]\tvalid_0's binary_logloss: 0.400364\n",
      "[1231]\tvalid_0's binary_logloss: 0.400359\n",
      "[1232]\tvalid_0's binary_logloss: 0.400358\n",
      "[1233]\tvalid_0's binary_logloss: 0.400359\n",
      "[1234]\tvalid_0's binary_logloss: 0.400364\n",
      "[1235]\tvalid_0's binary_logloss: 0.400361\n",
      "[1236]\tvalid_0's binary_logloss: 0.400356\n",
      "[1237]\tvalid_0's binary_logloss: 0.400349\n",
      "[1238]\tvalid_0's binary_logloss: 0.400345\n",
      "[1239]\tvalid_0's binary_logloss: 0.400339\n",
      "[1240]\tvalid_0's binary_logloss: 0.400342\n",
      "[1241]\tvalid_0's binary_logloss: 0.400344\n",
      "[1242]\tvalid_0's binary_logloss: 0.400344\n",
      "[1243]\tvalid_0's binary_logloss: 0.400349\n",
      "[1244]\tvalid_0's binary_logloss: 0.400347\n",
      "[1245]\tvalid_0's binary_logloss: 0.400345\n",
      "[1246]\tvalid_0's binary_logloss: 0.400343\n",
      "[1247]\tvalid_0's binary_logloss: 0.40035\n",
      "[1248]\tvalid_0's binary_logloss: 0.400358\n",
      "[1249]\tvalid_0's binary_logloss: 0.400349\n",
      "[1250]\tvalid_0's binary_logloss: 0.400346\n",
      "[1251]\tvalid_0's binary_logloss: 0.400337\n",
      "[1252]\tvalid_0's binary_logloss: 0.400332\n",
      "[1253]\tvalid_0's binary_logloss: 0.40032\n",
      "[1254]\tvalid_0's binary_logloss: 0.400322\n",
      "[1255]\tvalid_0's binary_logloss: 0.400324\n",
      "[1256]\tvalid_0's binary_logloss: 0.400308\n",
      "[1257]\tvalid_0's binary_logloss: 0.400298\n",
      "[1258]\tvalid_0's binary_logloss: 0.400302\n",
      "[1259]\tvalid_0's binary_logloss: 0.400301\n",
      "[1260]\tvalid_0's binary_logloss: 0.400305\n",
      "[1261]\tvalid_0's binary_logloss: 0.400299\n",
      "[1262]\tvalid_0's binary_logloss: 0.400294\n",
      "[1263]\tvalid_0's binary_logloss: 0.400297\n",
      "[1264]\tvalid_0's binary_logloss: 0.40029\n",
      "[1265]\tvalid_0's binary_logloss: 0.400297\n",
      "[1266]\tvalid_0's binary_logloss: 0.400306\n",
      "[1267]\tvalid_0's binary_logloss: 0.40031\n",
      "[1268]\tvalid_0's binary_logloss: 0.400301\n",
      "[1269]\tvalid_0's binary_logloss: 0.400298\n",
      "[1270]\tvalid_0's binary_logloss: 0.400307\n",
      "[1271]\tvalid_0's binary_logloss: 0.400313\n",
      "[1272]\tvalid_0's binary_logloss: 0.400322\n",
      "[1273]\tvalid_0's binary_logloss: 0.400325\n",
      "[1274]\tvalid_0's binary_logloss: 0.400319\n",
      "[1275]\tvalid_0's binary_logloss: 0.400329\n",
      "[1276]\tvalid_0's binary_logloss: 0.400313\n",
      "[1277]\tvalid_0's binary_logloss: 0.400313\n",
      "[1278]\tvalid_0's binary_logloss: 0.400312\n",
      "[1279]\tvalid_0's binary_logloss: 0.400306\n",
      "[1280]\tvalid_0's binary_logloss: 0.400313\n",
      "[1281]\tvalid_0's binary_logloss: 0.400321\n",
      "[1282]\tvalid_0's binary_logloss: 0.400329\n",
      "[1283]\tvalid_0's binary_logloss: 0.400342\n",
      "[1284]\tvalid_0's binary_logloss: 0.400351\n",
      "[1285]\tvalid_0's binary_logloss: 0.400361\n",
      "[1286]\tvalid_0's binary_logloss: 0.400356\n",
      "[1287]\tvalid_0's binary_logloss: 0.400351\n",
      "[1288]\tvalid_0's binary_logloss: 0.400361\n",
      "[1289]\tvalid_0's binary_logloss: 0.400352\n",
      "[1290]\tvalid_0's binary_logloss: 0.40035\n",
      "[1291]\tvalid_0's binary_logloss: 0.400339\n",
      "[1292]\tvalid_0's binary_logloss: 0.400344\n",
      "[1293]\tvalid_0's binary_logloss: 0.400338\n",
      "[1294]\tvalid_0's binary_logloss: 0.400335\n",
      "[1295]\tvalid_0's binary_logloss: 0.40034\n",
      "[1296]\tvalid_0's binary_logloss: 0.400342\n",
      "[1297]\tvalid_0's binary_logloss: 0.40034\n",
      "[1298]\tvalid_0's binary_logloss: 0.400346\n",
      "[1299]\tvalid_0's binary_logloss: 0.400347\n",
      "[1300]\tvalid_0's binary_logloss: 0.400351\n",
      "[1301]\tvalid_0's binary_logloss: 0.400358\n",
      "[1302]\tvalid_0's binary_logloss: 0.400363\n",
      "[1303]\tvalid_0's binary_logloss: 0.400369\n",
      "[1304]\tvalid_0's binary_logloss: 0.400374\n",
      "[1305]\tvalid_0's binary_logloss: 0.400383\n",
      "[1306]\tvalid_0's binary_logloss: 0.400382\n",
      "[1307]\tvalid_0's binary_logloss: 0.40038\n",
      "[1308]\tvalid_0's binary_logloss: 0.400381\n",
      "[1309]\tvalid_0's binary_logloss: 0.40038\n",
      "[1310]\tvalid_0's binary_logloss: 0.400379\n",
      "[1311]\tvalid_0's binary_logloss: 0.400386\n",
      "[1312]\tvalid_0's binary_logloss: 0.400385\n",
      "[1313]\tvalid_0's binary_logloss: 0.400386\n",
      "[1314]\tvalid_0's binary_logloss: 0.400377\n",
      "[1315]\tvalid_0's binary_logloss: 0.40038\n",
      "[1316]\tvalid_0's binary_logloss: 0.400389\n",
      "[1317]\tvalid_0's binary_logloss: 0.400388\n",
      "[1318]\tvalid_0's binary_logloss: 0.400383\n",
      "[1319]\tvalid_0's binary_logloss: 0.400382\n",
      "[1320]\tvalid_0's binary_logloss: 0.400383\n",
      "[1321]\tvalid_0's binary_logloss: 0.400387\n",
      "[1322]\tvalid_0's binary_logloss: 0.400394\n",
      "[1323]\tvalid_0's binary_logloss: 0.4004\n",
      "[1324]\tvalid_0's binary_logloss: 0.400402\n",
      "[1325]\tvalid_0's binary_logloss: 0.400412\n",
      "[1326]\tvalid_0's binary_logloss: 0.400413\n",
      "[1327]\tvalid_0's binary_logloss: 0.400412\n",
      "[1328]\tvalid_0's binary_logloss: 0.400414\n",
      "[1329]\tvalid_0's binary_logloss: 0.400409\n",
      "[1330]\tvalid_0's binary_logloss: 0.400407\n",
      "[1331]\tvalid_0's binary_logloss: 0.400407\n",
      "[1332]\tvalid_0's binary_logloss: 0.400414\n",
      "[1333]\tvalid_0's binary_logloss: 0.400422\n",
      "[1334]\tvalid_0's binary_logloss: 0.400416\n",
      "[1335]\tvalid_0's binary_logloss: 0.400412\n",
      "[1336]\tvalid_0's binary_logloss: 0.400411\n",
      "[1337]\tvalid_0's binary_logloss: 0.40041\n",
      "[1338]\tvalid_0's binary_logloss: 0.400416\n",
      "[1339]\tvalid_0's binary_logloss: 0.400423\n",
      "[1340]\tvalid_0's binary_logloss: 0.400421\n",
      "[1341]\tvalid_0's binary_logloss: 0.400415\n",
      "[1342]\tvalid_0's binary_logloss: 0.400413\n",
      "[1343]\tvalid_0's binary_logloss: 0.400407\n",
      "[1344]\tvalid_0's binary_logloss: 0.400404\n",
      "[1345]\tvalid_0's binary_logloss: 0.400409\n",
      "[1346]\tvalid_0's binary_logloss: 0.400413\n",
      "[1347]\tvalid_0's binary_logloss: 0.40041\n",
      "[1348]\tvalid_0's binary_logloss: 0.400408\n",
      "[1349]\tvalid_0's binary_logloss: 0.400403\n",
      "[1350]\tvalid_0's binary_logloss: 0.400414\n",
      "[1351]\tvalid_0's binary_logloss: 0.400414\n",
      "[1352]\tvalid_0's binary_logloss: 0.400419\n",
      "[1353]\tvalid_0's binary_logloss: 0.400421\n",
      "[1354]\tvalid_0's binary_logloss: 0.400424\n",
      "[1355]\tvalid_0's binary_logloss: 0.400428\n",
      "[1356]\tvalid_0's binary_logloss: 0.400424\n",
      "[1357]\tvalid_0's binary_logloss: 0.400424\n",
      "[1358]\tvalid_0's binary_logloss: 0.400418\n",
      "[1359]\tvalid_0's binary_logloss: 0.400412\n",
      "[1360]\tvalid_0's binary_logloss: 0.400413\n",
      "[1361]\tvalid_0's binary_logloss: 0.400402\n",
      "[1362]\tvalid_0's binary_logloss: 0.400405\n",
      "[1363]\tvalid_0's binary_logloss: 0.400407\n",
      "[1364]\tvalid_0's binary_logloss: 0.400407\n",
      "[1365]\tvalid_0's binary_logloss: 0.40041\n",
      "[1366]\tvalid_0's binary_logloss: 0.400408\n",
      "[1367]\tvalid_0's binary_logloss: 0.400406\n",
      "[1368]\tvalid_0's binary_logloss: 0.400403\n",
      "[1369]\tvalid_0's binary_logloss: 0.400411\n",
      "[1370]\tvalid_0's binary_logloss: 0.400415\n",
      "[1371]\tvalid_0's binary_logloss: 0.400414\n",
      "[1372]\tvalid_0's binary_logloss: 0.400412\n",
      "[1373]\tvalid_0's binary_logloss: 0.400412\n",
      "[1374]\tvalid_0's binary_logloss: 0.400409\n",
      "[1375]\tvalid_0's binary_logloss: 0.40041\n",
      "[1376]\tvalid_0's binary_logloss: 0.400409\n",
      "[1377]\tvalid_0's binary_logloss: 0.400408\n",
      "[1378]\tvalid_0's binary_logloss: 0.400407\n",
      "[1379]\tvalid_0's binary_logloss: 0.400417\n",
      "[1380]\tvalid_0's binary_logloss: 0.400418\n",
      "[1381]\tvalid_0's binary_logloss: 0.400407\n",
      "[1382]\tvalid_0's binary_logloss: 0.400404\n",
      "[1383]\tvalid_0's binary_logloss: 0.40039\n",
      "[1384]\tvalid_0's binary_logloss: 0.400399\n",
      "[1385]\tvalid_0's binary_logloss: 0.400398\n",
      "[1386]\tvalid_0's binary_logloss: 0.400387\n",
      "[1387]\tvalid_0's binary_logloss: 0.400389\n",
      "[1388]\tvalid_0's binary_logloss: 0.400377\n",
      "[1389]\tvalid_0's binary_logloss: 0.400378\n",
      "[1390]\tvalid_0's binary_logloss: 0.400382\n",
      "[1391]\tvalid_0's binary_logloss: 0.40038\n",
      "[1392]\tvalid_0's binary_logloss: 0.400375\n",
      "[1393]\tvalid_0's binary_logloss: 0.400376\n",
      "[1394]\tvalid_0's binary_logloss: 0.400374\n",
      "[1395]\tvalid_0's binary_logloss: 0.400373\n",
      "[1396]\tvalid_0's binary_logloss: 0.400376\n",
      "[1397]\tvalid_0's binary_logloss: 0.400374\n",
      "[1398]\tvalid_0's binary_logloss: 0.400365\n",
      "[1399]\tvalid_0's binary_logloss: 0.400368\n",
      "[1400]\tvalid_0's binary_logloss: 0.400366\n",
      "[1401]\tvalid_0's binary_logloss: 0.400367\n",
      "[1402]\tvalid_0's binary_logloss: 0.400363\n",
      "[1403]\tvalid_0's binary_logloss: 0.400362\n",
      "[1404]\tvalid_0's binary_logloss: 0.400363\n",
      "[1405]\tvalid_0's binary_logloss: 0.400361\n",
      "[1406]\tvalid_0's binary_logloss: 0.400363\n",
      "[1407]\tvalid_0's binary_logloss: 0.400358\n",
      "[1408]\tvalid_0's binary_logloss: 0.400351\n",
      "[1409]\tvalid_0's binary_logloss: 0.400353\n",
      "[1410]\tvalid_0's binary_logloss: 0.400354\n",
      "[1411]\tvalid_0's binary_logloss: 0.400356\n",
      "[1412]\tvalid_0's binary_logloss: 0.400355\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1413]\tvalid_0's binary_logloss: 0.400355\n",
      "[1414]\tvalid_0's binary_logloss: 0.400348\n",
      "[1415]\tvalid_0's binary_logloss: 0.400343\n",
      "[1416]\tvalid_0's binary_logloss: 0.400344\n",
      "[1417]\tvalid_0's binary_logloss: 0.400351\n",
      "[1418]\tvalid_0's binary_logloss: 0.400351\n",
      "[1419]\tvalid_0's binary_logloss: 0.40035\n",
      "[1420]\tvalid_0's binary_logloss: 0.400356\n",
      "[1421]\tvalid_0's binary_logloss: 0.400355\n",
      "[1422]\tvalid_0's binary_logloss: 0.400355\n",
      "[1423]\tvalid_0's binary_logloss: 0.400363\n",
      "[1424]\tvalid_0's binary_logloss: 0.400366\n",
      "[1425]\tvalid_0's binary_logloss: 0.400372\n",
      "[1426]\tvalid_0's binary_logloss: 0.400375\n",
      "[1427]\tvalid_0's binary_logloss: 0.400378\n",
      "[1428]\tvalid_0's binary_logloss: 0.400389\n",
      "[1429]\tvalid_0's binary_logloss: 0.400395\n",
      "[1430]\tvalid_0's binary_logloss: 0.400411\n",
      "[1431]\tvalid_0's binary_logloss: 0.400407\n",
      "[1432]\tvalid_0's binary_logloss: 0.400406\n",
      "[1433]\tvalid_0's binary_logloss: 0.400402\n",
      "[1434]\tvalid_0's binary_logloss: 0.400397\n",
      "[1435]\tvalid_0's binary_logloss: 0.400394\n",
      "[1436]\tvalid_0's binary_logloss: 0.400396\n",
      "[1437]\tvalid_0's binary_logloss: 0.400392\n",
      "[1438]\tvalid_0's binary_logloss: 0.400399\n",
      "[1439]\tvalid_0's binary_logloss: 0.400405\n",
      "[1440]\tvalid_0's binary_logloss: 0.400411\n",
      "[1441]\tvalid_0's binary_logloss: 0.40041\n",
      "[1442]\tvalid_0's binary_logloss: 0.40041\n",
      "[1443]\tvalid_0's binary_logloss: 0.400408\n",
      "[1444]\tvalid_0's binary_logloss: 0.400415\n",
      "[1445]\tvalid_0's binary_logloss: 0.40042\n",
      "[1446]\tvalid_0's binary_logloss: 0.400417\n",
      "[1447]\tvalid_0's binary_logloss: 0.400416\n",
      "[1448]\tvalid_0's binary_logloss: 0.400407\n",
      "[1449]\tvalid_0's binary_logloss: 0.400402\n",
      "[1450]\tvalid_0's binary_logloss: 0.400399\n",
      "[1451]\tvalid_0's binary_logloss: 0.400398\n",
      "[1452]\tvalid_0's binary_logloss: 0.400392\n",
      "[1453]\tvalid_0's binary_logloss: 0.400389\n",
      "[1454]\tvalid_0's binary_logloss: 0.400395\n",
      "[1455]\tvalid_0's binary_logloss: 0.400395\n",
      "[1456]\tvalid_0's binary_logloss: 0.40039\n",
      "[1457]\tvalid_0's binary_logloss: 0.400388\n",
      "[1458]\tvalid_0's binary_logloss: 0.400395\n",
      "Early stopping, best iteration is:\n",
      "[958]\tvalid_0's binary_logloss: 0.400196\n"
     ]
    }
   ],
   "source": [
    "# specify your configurations as a dict\n",
    "params = {\n",
    "    'task': 'train',\n",
    "    'boosting_type': 'gbdt',\n",
    "    'objective': 'binary',\n",
    "    'metric': { 'binary_logloss'},\n",
    "    'num_leaves': 31, # defauly leaves(31) amount for each tree\n",
    "    'learning_rate': 0.08,\n",
    "    'feature_fraction': 0.7, # will select 70% features before training each tree\n",
    "    'bagging_fraction': 0.3, #feature_fraction, but this will random select part of data\n",
    "    'bagging_freq': 5, #  perform bagging at every 5 iteration\n",
    "    'verbose': 0\n",
    "}\n",
    "\n",
    "print('Start training...')\n",
    "# train\n",
    "gbm = lgb.train(params,\n",
    "                lgb_train,\n",
    "                num_boost_round=4000,\n",
    "                valid_sets=lgb_eval,\n",
    "                early_stopping_rounds=500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "defaultdict(<class 'dict'>, {'valid_0': {'binary_logloss': 0.40019555134958557}})\n",
      "958\n"
     ]
    }
   ],
   "source": [
    "print(gbm.best_score)\n",
    "print(gbm.best_iteration)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [],
   "source": [
    "from operator import itemgetter\n",
    "from sklearn.model_selection import train_test_split\n",
    "import xgboost as xgb\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "def run_default_test(train, test, features, target, random_state=0):\n",
    "    eta = 0.1\n",
    "    max_depth = 5\n",
    "    subsample = 0.8\n",
    "    colsample_bytree = 0.8\n",
    "    print('XGBoost params. ETA: {}, MAX_DEPTH: {}, SUBSAMPLE: {}, COLSAMPLE_BY_TREE: {}'.format(eta, max_depth, subsample, colsample_bytree))\n",
    "    params = {\n",
    "        \"objective\": \"binary:logistic\",\n",
    "        \"booster\" : \"gbtree\",\n",
    "        \"eval_metric\": \"logloss\",\n",
    "        \"eta\": eta,\n",
    "        \"max_depth\": max_depth,\n",
    "        \"subsample\": subsample,\n",
    "        \"colsample_bytree\": colsample_bytree,\n",
    "        \"silent\": 1,\n",
    "        \"seed\": random_state\n",
    "    }\n",
    "    num_boost_round = 260\n",
    "    early_stopping_rounds = 20\n",
    "    test_size = 0.2\n",
    "\n",
    "    X_train, X_valid = train_test_split(train, test_size=test_size, random_state=random_state)\n",
    "    y_train = X_train[target]\n",
    "    y_valid = X_valid[target]\n",
    "    dtrain = xgb.DMatrix(X_train[features], y_train)\n",
    "    dvalid = xgb.DMatrix(X_valid[features], y_valid)\n",
    "    watchlist = [(dtrain, 'train'), (dvalid, 'eval')]\n",
    "    gbm = xgb.train(params, dtrain, num_boost_round, evals=watchlist, early_stopping_rounds=early_stopping_rounds, verbose_eval=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBoost params. ETA: 0.1, MAX_DEPTH: 5, SUBSAMPLE: 0.8, COLSAMPLE_BY_TREE: 0.8\n",
      "[0]\ttrain-logloss:0.648232\teval-logloss:0.648223\n",
      "Multiple eval metrics have been passed: 'eval-logloss' will be used for early stopping.\n",
      "\n",
      "Will train until eval-logloss hasn't improved in 20 rounds.\n",
      "[1]\ttrain-logloss:0.61155\teval-logloss:0.611518\n",
      "[2]\ttrain-logloss:0.58168\teval-logloss:0.581626\n",
      "[3]\ttrain-logloss:0.556558\teval-logloss:0.55647\n",
      "[4]\ttrain-logloss:0.535377\teval-logloss:0.535272\n",
      "[5]\ttrain-logloss:0.517634\teval-logloss:0.517516\n",
      "[6]\ttrain-logloss:0.502628\teval-logloss:0.502504\n",
      "[7]\ttrain-logloss:0.490077\teval-logloss:0.489942\n",
      "[8]\ttrain-logloss:0.479384\teval-logloss:0.47925\n",
      "[9]\ttrain-logloss:0.470294\teval-logloss:0.470162\n",
      "[10]\ttrain-logloss:0.462493\teval-logloss:0.462368\n",
      "[11]\ttrain-logloss:0.455896\teval-logloss:0.455775\n",
      "[12]\ttrain-logloss:0.450228\teval-logloss:0.450099\n",
      "[13]\ttrain-logloss:0.445374\teval-logloss:0.445241\n",
      "[14]\ttrain-logloss:0.441245\teval-logloss:0.44111\n",
      "[15]\ttrain-logloss:0.437608\teval-logloss:0.437485\n",
      "[16]\ttrain-logloss:0.434544\teval-logloss:0.434416\n",
      "[17]\ttrain-logloss:0.432117\teval-logloss:0.431993\n",
      "[18]\ttrain-logloss:0.429779\teval-logloss:0.429651\n",
      "[19]\ttrain-logloss:0.42779\teval-logloss:0.427678\n",
      "[20]\ttrain-logloss:0.426088\teval-logloss:0.425999\n",
      "[21]\ttrain-logloss:0.424666\teval-logloss:0.424595\n",
      "[22]\ttrain-logloss:0.423311\teval-logloss:0.42325\n",
      "[23]\ttrain-logloss:0.422208\teval-logloss:0.422154\n",
      "[24]\ttrain-logloss:0.421275\teval-logloss:0.421255\n",
      "[25]\ttrain-logloss:0.420473\teval-logloss:0.420482\n",
      "[26]\ttrain-logloss:0.419799\teval-logloss:0.419823\n",
      "[27]\ttrain-logloss:0.419168\teval-logloss:0.419197\n",
      "[28]\ttrain-logloss:0.41857\teval-logloss:0.418609\n",
      "[29]\ttrain-logloss:0.417968\teval-logloss:0.418018\n",
      "[30]\ttrain-logloss:0.417485\teval-logloss:0.41757\n",
      "[31]\ttrain-logloss:0.416933\teval-logloss:0.416999\n",
      "[32]\ttrain-logloss:0.416559\teval-logloss:0.41663\n",
      "[33]\ttrain-logloss:0.41615\teval-logloss:0.416242\n",
      "[34]\ttrain-logloss:0.415732\teval-logloss:0.415851\n",
      "[35]\ttrain-logloss:0.415339\teval-logloss:0.415452\n",
      "[36]\ttrain-logloss:0.415014\teval-logloss:0.415166\n",
      "[37]\ttrain-logloss:0.414749\teval-logloss:0.414904\n",
      "[38]\ttrain-logloss:0.414566\teval-logloss:0.414739\n",
      "[39]\ttrain-logloss:0.41436\teval-logloss:0.41455\n",
      "[40]\ttrain-logloss:0.41412\teval-logloss:0.414327\n",
      "[41]\ttrain-logloss:0.413915\teval-logloss:0.414117\n",
      "[42]\ttrain-logloss:0.413575\teval-logloss:0.413784\n",
      "[43]\ttrain-logloss:0.413333\teval-logloss:0.413568\n",
      "[44]\ttrain-logloss:0.413138\teval-logloss:0.413388\n",
      "[45]\ttrain-logloss:0.412901\teval-logloss:0.413173\n",
      "[46]\ttrain-logloss:0.412725\teval-logloss:0.413009\n",
      "[47]\ttrain-logloss:0.412559\teval-logloss:0.412866\n",
      "[48]\ttrain-logloss:0.412457\teval-logloss:0.412772\n",
      "[49]\ttrain-logloss:0.412147\teval-logloss:0.412479\n",
      "[50]\ttrain-logloss:0.411933\teval-logloss:0.412286\n",
      "[51]\ttrain-logloss:0.411796\teval-logloss:0.412159\n",
      "[52]\ttrain-logloss:0.411628\teval-logloss:0.412014\n",
      "[53]\ttrain-logloss:0.411553\teval-logloss:0.411954\n",
      "[54]\ttrain-logloss:0.411419\teval-logloss:0.41182\n",
      "[55]\ttrain-logloss:0.411314\teval-logloss:0.411735\n",
      "[56]\ttrain-logloss:0.411096\teval-logloss:0.411532\n",
      "[57]\ttrain-logloss:0.410938\teval-logloss:0.411395\n",
      "[58]\ttrain-logloss:0.410879\teval-logloss:0.411336\n",
      "[59]\ttrain-logloss:0.410813\teval-logloss:0.411285\n",
      "[60]\ttrain-logloss:0.410695\teval-logloss:0.411174\n",
      "[61]\ttrain-logloss:0.410601\teval-logloss:0.411095\n",
      "[62]\ttrain-logloss:0.410435\teval-logloss:0.410948\n",
      "[63]\ttrain-logloss:0.410352\teval-logloss:0.410878\n",
      "[64]\ttrain-logloss:0.410267\teval-logloss:0.410803\n",
      "[65]\ttrain-logloss:0.410013\teval-logloss:0.410576\n",
      "[66]\ttrain-logloss:0.409881\teval-logloss:0.41046\n",
      "[67]\ttrain-logloss:0.409842\teval-logloss:0.410423\n",
      "[68]\ttrain-logloss:0.409736\teval-logloss:0.410312\n",
      "[69]\ttrain-logloss:0.409666\teval-logloss:0.410257\n",
      "[70]\ttrain-logloss:0.409498\teval-logloss:0.410095\n",
      "[71]\ttrain-logloss:0.409376\teval-logloss:0.409983\n",
      "[72]\ttrain-logloss:0.409304\teval-logloss:0.409914\n",
      "[73]\ttrain-logloss:0.40918\teval-logloss:0.409816\n",
      "[74]\ttrain-logloss:0.409049\teval-logloss:0.409701\n",
      "[75]\ttrain-logloss:0.40896\teval-logloss:0.409616\n",
      "[76]\ttrain-logloss:0.408809\teval-logloss:0.40948\n",
      "[77]\ttrain-logloss:0.408718\teval-logloss:0.40942\n",
      "[78]\ttrain-logloss:0.408643\teval-logloss:0.409358\n",
      "[79]\ttrain-logloss:0.408513\teval-logloss:0.409234\n",
      "[80]\ttrain-logloss:0.408397\teval-logloss:0.409121\n",
      "[81]\ttrain-logloss:0.408273\teval-logloss:0.409013\n",
      "[82]\ttrain-logloss:0.408168\teval-logloss:0.408923\n",
      "[83]\ttrain-logloss:0.408105\teval-logloss:0.40887\n",
      "[84]\ttrain-logloss:0.408003\teval-logloss:0.408773\n",
      "[85]\ttrain-logloss:0.407891\teval-logloss:0.408693\n",
      "[86]\ttrain-logloss:0.407807\teval-logloss:0.408621\n",
      "[87]\ttrain-logloss:0.407764\teval-logloss:0.408584\n",
      "[88]\ttrain-logloss:0.407723\teval-logloss:0.408557\n",
      "[89]\ttrain-logloss:0.407643\teval-logloss:0.408477\n",
      "[90]\ttrain-logloss:0.407581\teval-logloss:0.408427\n",
      "[91]\ttrain-logloss:0.407473\teval-logloss:0.408321\n",
      "[92]\ttrain-logloss:0.407419\teval-logloss:0.408286\n",
      "[93]\ttrain-logloss:0.407373\teval-logloss:0.408253\n",
      "[94]\ttrain-logloss:0.407222\teval-logloss:0.40811\n",
      "[95]\ttrain-logloss:0.407169\teval-logloss:0.408056\n",
      "[96]\ttrain-logloss:0.407038\teval-logloss:0.407926\n",
      "[97]\ttrain-logloss:0.406991\teval-logloss:0.407886\n",
      "[98]\ttrain-logloss:0.40693\teval-logloss:0.407833\n",
      "[99]\ttrain-logloss:0.40689\teval-logloss:0.407796\n",
      "[100]\ttrain-logloss:0.406831\teval-logloss:0.407764\n",
      "[101]\ttrain-logloss:0.406798\teval-logloss:0.407751\n",
      "[102]\ttrain-logloss:0.406725\teval-logloss:0.407687\n",
      "[103]\ttrain-logloss:0.406649\teval-logloss:0.407638\n",
      "[104]\ttrain-logloss:0.406609\teval-logloss:0.407606\n",
      "[105]\ttrain-logloss:0.406553\teval-logloss:0.40756\n",
      "[106]\ttrain-logloss:0.406487\teval-logloss:0.407494\n",
      "[107]\ttrain-logloss:0.406455\teval-logloss:0.407479\n",
      "[108]\ttrain-logloss:0.406314\teval-logloss:0.407359\n",
      "[109]\ttrain-logloss:0.406262\teval-logloss:0.40732\n",
      "[110]\ttrain-logloss:0.406158\teval-logloss:0.407231\n",
      "[111]\ttrain-logloss:0.406113\teval-logloss:0.407188\n",
      "[112]\ttrain-logloss:0.406082\teval-logloss:0.407167\n",
      "[113]\ttrain-logloss:0.406014\teval-logloss:0.407112\n",
      "[114]\ttrain-logloss:0.405992\teval-logloss:0.407102\n",
      "[115]\ttrain-logloss:0.405888\teval-logloss:0.407009\n",
      "[116]\ttrain-logloss:0.405814\teval-logloss:0.406954\n",
      "[117]\ttrain-logloss:0.405766\teval-logloss:0.406929\n",
      "[118]\ttrain-logloss:0.405718\teval-logloss:0.406891\n",
      "[119]\ttrain-logloss:0.405676\teval-logloss:0.406861\n",
      "[120]\ttrain-logloss:0.405594\teval-logloss:0.406802\n",
      "[121]\ttrain-logloss:0.405529\teval-logloss:0.406753\n",
      "[122]\ttrain-logloss:0.405468\teval-logloss:0.406705\n",
      "[123]\ttrain-logloss:0.405457\teval-logloss:0.4067\n",
      "[124]\ttrain-logloss:0.405371\teval-logloss:0.406627\n",
      "[125]\ttrain-logloss:0.405235\teval-logloss:0.406496\n",
      "[126]\ttrain-logloss:0.405219\teval-logloss:0.406484\n",
      "[127]\ttrain-logloss:0.405145\teval-logloss:0.406428\n",
      "[128]\ttrain-logloss:0.405104\teval-logloss:0.406399\n",
      "[129]\ttrain-logloss:0.405056\teval-logloss:0.406361\n",
      "[130]\ttrain-logloss:0.40503\teval-logloss:0.406348\n",
      "[131]\ttrain-logloss:0.404909\teval-logloss:0.406244\n",
      "[132]\ttrain-logloss:0.40484\teval-logloss:0.406193\n",
      "[133]\ttrain-logloss:0.404815\teval-logloss:0.406181\n",
      "[134]\ttrain-logloss:0.404703\teval-logloss:0.406078\n",
      "[135]\ttrain-logloss:0.404601\teval-logloss:0.405981\n",
      "[136]\ttrain-logloss:0.404517\teval-logloss:0.40592\n",
      "[137]\ttrain-logloss:0.404493\teval-logloss:0.405905\n",
      "[138]\ttrain-logloss:0.40444\teval-logloss:0.405866\n",
      "[139]\ttrain-logloss:0.404362\teval-logloss:0.405802\n",
      "[140]\ttrain-logloss:0.404321\teval-logloss:0.405778\n",
      "[141]\ttrain-logloss:0.404264\teval-logloss:0.405716\n",
      "[142]\ttrain-logloss:0.404216\teval-logloss:0.405683\n",
      "[143]\ttrain-logloss:0.404178\teval-logloss:0.405664\n",
      "[144]\ttrain-logloss:0.404126\teval-logloss:0.405633\n",
      "[145]\ttrain-logloss:0.404104\teval-logloss:0.405615\n",
      "[146]\ttrain-logloss:0.404005\teval-logloss:0.405533\n",
      "[147]\ttrain-logloss:0.403965\teval-logloss:0.405498\n",
      "[148]\ttrain-logloss:0.403949\teval-logloss:0.405492\n",
      "[149]\ttrain-logloss:0.403918\teval-logloss:0.405471\n",
      "[150]\ttrain-logloss:0.403855\teval-logloss:0.405425\n",
      "[151]\ttrain-logloss:0.403826\teval-logloss:0.405403\n",
      "[152]\ttrain-logloss:0.403745\teval-logloss:0.405341\n",
      "[153]\ttrain-logloss:0.40373\teval-logloss:0.405328\n",
      "[154]\ttrain-logloss:0.403615\teval-logloss:0.405225\n",
      "[155]\ttrain-logloss:0.403589\teval-logloss:0.405212\n",
      "[156]\ttrain-logloss:0.403564\teval-logloss:0.405201\n",
      "[157]\ttrain-logloss:0.403554\teval-logloss:0.405194\n",
      "[158]\ttrain-logloss:0.403485\teval-logloss:0.405141\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[159]\ttrain-logloss:0.403416\teval-logloss:0.4051\n",
      "[160]\ttrain-logloss:0.403284\teval-logloss:0.404985\n",
      "[161]\ttrain-logloss:0.403271\teval-logloss:0.404979\n",
      "[162]\ttrain-logloss:0.403216\teval-logloss:0.404933\n",
      "[163]\ttrain-logloss:0.403177\teval-logloss:0.4049\n",
      "[164]\ttrain-logloss:0.403079\teval-logloss:0.404811\n",
      "[165]\ttrain-logloss:0.403067\teval-logloss:0.404802\n",
      "[166]\ttrain-logloss:0.403031\teval-logloss:0.404785\n",
      "[167]\ttrain-logloss:0.403008\teval-logloss:0.404778\n",
      "[168]\ttrain-logloss:0.402993\teval-logloss:0.404776\n",
      "[169]\ttrain-logloss:0.40298\teval-logloss:0.40477\n",
      "[170]\ttrain-logloss:0.402937\teval-logloss:0.404732\n",
      "[171]\ttrain-logloss:0.402912\teval-logloss:0.404713\n",
      "[172]\ttrain-logloss:0.40288\teval-logloss:0.404697\n",
      "[173]\ttrain-logloss:0.402828\teval-logloss:0.404654\n",
      "[174]\ttrain-logloss:0.402806\teval-logloss:0.404637\n",
      "[175]\ttrain-logloss:0.402771\teval-logloss:0.404621\n",
      "[176]\ttrain-logloss:0.402726\teval-logloss:0.404585\n",
      "[177]\ttrain-logloss:0.402682\teval-logloss:0.404558\n",
      "[178]\ttrain-logloss:0.402669\teval-logloss:0.404554\n",
      "[179]\ttrain-logloss:0.402618\teval-logloss:0.404517\n",
      "[180]\ttrain-logloss:0.402572\teval-logloss:0.404486\n",
      "[181]\ttrain-logloss:0.402506\teval-logloss:0.404439\n",
      "[182]\ttrain-logloss:0.402438\teval-logloss:0.40438\n",
      "[183]\ttrain-logloss:0.402415\teval-logloss:0.404375\n",
      "[184]\ttrain-logloss:0.402378\teval-logloss:0.404351\n",
      "[185]\ttrain-logloss:0.402324\teval-logloss:0.404301\n",
      "[186]\ttrain-logloss:0.402315\teval-logloss:0.404298\n",
      "[187]\ttrain-logloss:0.402286\teval-logloss:0.404279\n",
      "[188]\ttrain-logloss:0.402252\teval-logloss:0.404248\n",
      "[189]\ttrain-logloss:0.402231\teval-logloss:0.404241\n",
      "[190]\ttrain-logloss:0.402202\teval-logloss:0.404228\n",
      "[191]\ttrain-logloss:0.402177\teval-logloss:0.404219\n",
      "[192]\ttrain-logloss:0.402133\teval-logloss:0.404185\n",
      "[193]\ttrain-logloss:0.402098\teval-logloss:0.404152\n",
      "[194]\ttrain-logloss:0.402045\teval-logloss:0.404103\n",
      "[195]\ttrain-logloss:0.402019\teval-logloss:0.404087\n",
      "[196]\ttrain-logloss:0.401991\teval-logloss:0.404077\n",
      "[197]\ttrain-logloss:0.401936\teval-logloss:0.404022\n",
      "[198]\ttrain-logloss:0.401901\teval-logloss:0.40399\n",
      "[199]\ttrain-logloss:0.401862\teval-logloss:0.403964\n",
      "[200]\ttrain-logloss:0.401819\teval-logloss:0.403943\n",
      "[201]\ttrain-logloss:0.401763\teval-logloss:0.403896\n",
      "[202]\ttrain-logloss:0.401733\teval-logloss:0.40388\n",
      "[203]\ttrain-logloss:0.401703\teval-logloss:0.403864\n",
      "[204]\ttrain-logloss:0.401691\teval-logloss:0.403854\n",
      "[205]\ttrain-logloss:0.40166\teval-logloss:0.403835\n",
      "[206]\ttrain-logloss:0.401619\teval-logloss:0.403812\n",
      "[207]\ttrain-logloss:0.401573\teval-logloss:0.403775\n",
      "[208]\ttrain-logloss:0.401562\teval-logloss:0.403772\n",
      "[209]\ttrain-logloss:0.401469\teval-logloss:0.403682\n",
      "[210]\ttrain-logloss:0.401443\teval-logloss:0.403679\n",
      "[211]\ttrain-logloss:0.401411\teval-logloss:0.403662\n",
      "[212]\ttrain-logloss:0.401377\teval-logloss:0.403643\n",
      "[213]\ttrain-logloss:0.401352\teval-logloss:0.403626\n",
      "[214]\ttrain-logloss:0.401315\teval-logloss:0.403606\n",
      "[215]\ttrain-logloss:0.401261\teval-logloss:0.403561\n",
      "[216]\ttrain-logloss:0.401195\teval-logloss:0.403508\n",
      "[217]\ttrain-logloss:0.401132\teval-logloss:0.403477\n",
      "[218]\ttrain-logloss:0.401088\teval-logloss:0.403438\n",
      "[219]\ttrain-logloss:0.401073\teval-logloss:0.403439\n",
      "[220]\ttrain-logloss:0.40103\teval-logloss:0.403407\n",
      "[221]\ttrain-logloss:0.400994\teval-logloss:0.403381\n",
      "[222]\ttrain-logloss:0.400971\teval-logloss:0.403363\n",
      "[223]\ttrain-logloss:0.400959\teval-logloss:0.403361\n",
      "[224]\ttrain-logloss:0.400939\teval-logloss:0.403349\n",
      "[225]\ttrain-logloss:0.400902\teval-logloss:0.403323\n",
      "[226]\ttrain-logloss:0.400813\teval-logloss:0.403241\n",
      "[227]\ttrain-logloss:0.400773\teval-logloss:0.403211\n",
      "[228]\ttrain-logloss:0.400717\teval-logloss:0.403174\n",
      "[229]\ttrain-logloss:0.400703\teval-logloss:0.403175\n",
      "[230]\ttrain-logloss:0.400661\teval-logloss:0.403153\n",
      "[231]\ttrain-logloss:0.400649\teval-logloss:0.403152\n",
      "[232]\ttrain-logloss:0.400631\teval-logloss:0.403144\n",
      "[233]\ttrain-logloss:0.400599\teval-logloss:0.403114\n",
      "[234]\ttrain-logloss:0.400573\teval-logloss:0.403102\n",
      "[235]\ttrain-logloss:0.400542\teval-logloss:0.403087\n",
      "[236]\ttrain-logloss:0.400481\teval-logloss:0.403048\n",
      "[237]\ttrain-logloss:0.400441\teval-logloss:0.403022\n",
      "[238]\ttrain-logloss:0.400433\teval-logloss:0.40302\n",
      "[239]\ttrain-logloss:0.400396\teval-logloss:0.402991\n",
      "[240]\ttrain-logloss:0.400376\teval-logloss:0.402992\n",
      "[241]\ttrain-logloss:0.400342\teval-logloss:0.402963\n",
      "[242]\ttrain-logloss:0.400309\teval-logloss:0.402941\n",
      "[243]\ttrain-logloss:0.400299\teval-logloss:0.402936\n",
      "[244]\ttrain-logloss:0.400257\teval-logloss:0.402905\n",
      "[245]\ttrain-logloss:0.400221\teval-logloss:0.402891\n",
      "[246]\ttrain-logloss:0.400216\teval-logloss:0.402889\n",
      "[247]\ttrain-logloss:0.400198\teval-logloss:0.402874\n",
      "[248]\ttrain-logloss:0.400153\teval-logloss:0.402833\n",
      "[249]\ttrain-logloss:0.400141\teval-logloss:0.402832\n",
      "[250]\ttrain-logloss:0.400094\teval-logloss:0.402793\n",
      "[251]\ttrain-logloss:0.40007\teval-logloss:0.402789\n",
      "[252]\ttrain-logloss:0.400022\teval-logloss:0.402765\n",
      "[253]\ttrain-logloss:0.399969\teval-logloss:0.402723\n",
      "[254]\ttrain-logloss:0.399894\teval-logloss:0.402661\n",
      "[255]\ttrain-logloss:0.399864\teval-logloss:0.402643\n",
      "[256]\ttrain-logloss:0.399842\teval-logloss:0.402631\n",
      "[257]\ttrain-logloss:0.399814\teval-logloss:0.402612\n",
      "[258]\ttrain-logloss:0.399795\teval-logloss:0.402608\n",
      "[259]\ttrain-logloss:0.399756\teval-logloss:0.402592\n"
     ]
    }
   ],
   "source": [
    "features = ['C1', 'banner_pos', 'device_type', 'device_conn_type', 'C14',\n",
    "       'C15', 'C16', 'C17', 'C18', 'C19', 'C20', 'C21', 'hour_of_day',\n",
    "       'site_id_int', 'site_domain_int', 'site_category_int', 'app_id_int',\n",
    "       'app_domain_int', 'app_category_int', 'device_id_int', 'device_ip_int',\n",
    "       'device_model_int', 'day_of_week_int']\n",
    "run_default_test(train, y_target, features, 'click')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
